New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cmake,common/RWLock: check for libpthread extensions #19202
Conversation
LTGM, seems more reasonable |
@@ -101,6 +101,7 @@ CHECK_FUNCTION_EXISTS(pthread_spin_init HAVE_PTHREAD_SPINLOCK) | |||
CHECK_FUNCTION_EXISTS(pthread_set_name_np HAVE_PTHREAD_SET_NAME_NP) | |||
CHECK_FUNCTION_EXISTS(pthread_setname_np HAVE_PTHREAD_SETNAME_NP) | |||
CHECK_FUNCTION_EXISTS(pthread_getname_np HAVE_PTHREAD_GETNAME_NP) | |||
CHECK_FUNCTION_EXISTS(pthread_rwlockattr_setkind_np HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this sets a cmake variable HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP
to make that visible to the compiler, we also need to add a #cmakedefine
for it in src/include/config-h.in.cmake
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cbodley ahh, i forgot that! fixed and repushed.
pthread_rwlockattr_setkind_np() is a GNU extension of libpthread. and Tianshan Qu pointed out, we cannot use ifdef(PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP) to detect the availability of this function, because it's an enum not a macro. so, like other *_np() extensions, we check this one also using cmake at the configure phase. Reported-by: Tianshan Qu <tianshan@xsky.com> Signed-off-by: Kefu Chai <kchai@redhat.com>
cac1cab
to
cf50fb9
Compare
pthread_rwlockattr_setkind_np() is a GNU extension of libpthread. and
Tianshan Qu pointed out, we cannot use
ifdef(PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP) to detect the
availability of this function, because it's an enum not a macro. so,
like other *_np() extensions, we check this one also using cmake at
the configure phase.
Reported-by: Tianshan Qu tianshan@xsky.com
Signed-off-by: Kefu Chai kchai@redhat.com