[Groonga-commit] groonga/groonga at 114e129 [master] Add pthread_{mutex, cond}attr_setpshared() availability check for NetBSD

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index