Kouhei Sutou
null+****@clear*****
Thu Jul 11 21:54:50 JST 2013
Kouhei Sutou 2013-07-11 21:54:50 +0900 (Thu, 11 Jul 2013) New Revision: 114e129fdaf45d0a57e85eb60234dff08a528b6b https://github.com/groonga/groonga/commit/114e129fdaf45d0a57e85eb60234dff08a528b6b Message: Add pthread_{mutex,cond}attr_setpshared() availability check for NetBSD Reported by OBATA Akio. Thanks!!! Modified files: CMakeLists.txt config.h.cmake configure.ac lib/groonga_in.h Modified: CMakeLists.txt (+2 -0) =================================================================== --- CMakeLists.txt 2013-07-11 21:35:41 +0900 (c8ecf78) +++ CMakeLists.txt 2013-07-11 21:54:50 +0900 (24f577d) @@ -151,6 +151,8 @@ if(UNIX) if(NOT ${HAVE_LIBPTHREAD} EQUAL 1) message(FATAL_ERROR "No libpthread found") endif() + ac_check_funcs(pthread_mutexattr_setpshared) + ac_check_funcs(pthread_condattr_setpshared) endif() option(GRN_WITH_NFKC "use NFKC based UTF8 normalization." ON) Modified: config.h.cmake (+2 -0) =================================================================== --- config.h.cmake 2013-07-11 21:35:41 +0900 (c135f5c) +++ config.h.cmake 2013-07-11 21:54:50 +0900 (289a9e9) @@ -140,3 +140,5 @@ #cmakedefine HAVE_STRNCASECMP #cmakedefine HAVE_STRTOULL #cmakedefine HAVE_WRITE +#cmakedefine HAVE_PTHREAD_MUTEXATTR_SETPSHARED +#cmakedefine HAVE_PTHREAD_CONDATTR_SETPSHARED Modified: configure.ac (+2 -0) =================================================================== --- configure.ac 2013-07-11 21:35:41 +0900 (bf60764) +++ configure.ac 2013-07-11 21:54:50 +0900 (4aae134) @@ -455,6 +455,8 @@ if test "$os_win32" != "yes"; then AC_SEARCH_LIBS(pthread_create, pthread, [], [AC_MSG_ERROR("No libpthread found")]) + AC_CHECK_FUNCS(pthread_mutexattr_setpshared) + AC_CHECK_FUNCS(pthread_condattr_setpshared) fi AC_SEARCH_LIBS(gethostbyname, nsl) AC_SEARCH_LIBS(socket, socket) Modified: lib/groonga_in.h (+10 -2) =================================================================== --- lib/groonga_in.h 2013-07-11 21:35:41 +0900 (720c0f2) +++ lib/groonga_in.h 2013-07-11 21:54:50 +0900 (f3d27bd) @@ -260,12 +260,16 @@ typedef pthread_mutex_t grn_mutex; #define MUTEX_LOCK(m) pthread_mutex_lock(&m) #define MUTEX_UNLOCK(m) pthread_mutex_unlock(&m) #define MUTEX_FIN(m) -#define MUTEX_INIT_SHARED(m) do {\ +#ifdef HAVE_PTHREAD_MUTEXATTR_SETPSHARED +# define MUTEX_INIT_SHARED(m) do {\ pthread_mutexattr_t mutexattr;\ pthread_mutexattr_init(&mutexattr);\ pthread_mutexattr_setpshared(&mutexattr, PTHREAD_PROCESS_SHARED);\ pthread_mutex_init(&m, &mutexattr);\ } while (0) +#else +# define MUTEX_INIT_SHARED MUTEX_INIT +#endif /* HAVE_PTHREAD_MUTEXATTR_SETPSHARED */ typedef pthread_mutex_t grn_critical_section; #define CRITICAL_SECTION_INIT(cs) pthread_mutex_init(&(cs), NULL) @@ -278,12 +282,16 @@ typedef pthread_cond_t grn_cond; #define COND_SIGNAL(c) pthread_cond_signal(&c) #define COND_WAIT(c,m) pthread_cond_wait(&c, &m) #define COND_BROADCAST(c) pthread_cond_broadcast(&c) -#define COND_INIT_SHARED(c) do {\ +#ifdef HAVE_PTHREAD_CONDATTR_SETPSHARED +# define COND_INIT_SHARED(c) do {\ pthread_condattr_t condattr;\ pthread_condattr_init(&condattr);\ pthread_condattr_setpshared(&condattr, PTHREAD_PROCESS_SHARED);\ pthread_cond_init(&c, &condattr);\ } while (0) +#else +# define COND_INIT_SHARED COND_INIT +#endif /* HAVE_PTHREAD_CONDATTR_SETPSHARE */ typedef pthread_key_t grn_thread_key; #define THREAD_KEY_CREATE(key, destr) pthread_key_create(key, destr) -------------- next part -------------- HTML����������������������������...Download