pthread-threads.h: only redirect to GC_pthread_sigmask if it is present
authorAndy Wingo <wingo@pobox.com>
Sun, 3 Apr 2011 20:03:56 +0000 (22:03 +0200)
committerAndy Wingo <wingo@pobox.com>
Sun, 3 Apr 2011 20:03:56 +0000 (22:03 +0200)
* configure.ac: Check for pthread_sigmask.
* libguile/gen-scmconfig.c: Create SCM_HAVE_GC_PTHREAD_SIGMASK.
* libguile/pthread-threads.h (scm_i_pthread_sigmask): Only redirect to
  GC_pthread_sigmask if GC_pthread_sigmask is present.

configure.ac
libguile/gen-scmconfig.c
libguile/pthread-threads.h

index 2fd72a4..45438c8 100644 (file)
@@ -1238,7 +1238,7 @@ save_LIBS="$LIBS"
 LIBS="$BDW_GC_LIBS $LIBS"
 CFLAGS="$BDW_GC_CFLAGS $CFLAGS"
 
-AC_CHECK_FUNCS([GC_do_blocking GC_call_with_gc_active GC_pthread_exit GC_pthread_cancel GC_allow_register_threads])
+AC_CHECK_FUNCS([GC_do_blocking GC_call_with_gc_active GC_pthread_exit GC_pthread_cancel GC_allow_register_threads GC_pthread_sigmask])
 
 # Though the `GC_do_blocking ()' symbol is present in GC 7.1, it is not
 # declared, and has a different type (returning void instead of
index 97066b7..5834346 100644 (file)
@@ -330,6 +330,12 @@ main (int argc, char *argv[])
   pf ("#define SCM_HAVE_GC_PTHREAD_EXIT 0 /* 0 or 1 */\n");
 #endif
 
+#ifdef HAVE_GC_PTHREAD_SIGMASK
+  pf ("#define SCM_HAVE_GC_PTHREAD_SIGMASK 1 /* 0 or 1 */\n");
+#else
+  pf ("#define SCM_HAVE_GC_PTHREAD_SIGMASK 0 /* 0 or 1 */\n");
+#endif
+
   pf ("\n\n/*** File system access ***/\n");
 
   pf ("/* Define to 1 if `struct dirent64' is available.  */\n");
index b5fff83..4c67b18 100644 (file)
 
 /* Signals
  */
+#if SCM_HAVE_GC_PTHREAD_SIGMASK
 #define scm_i_pthread_sigmask               GC_pthread_sigmask
+#else
+#define scm_i_pthread_sigmask               pthread_sigmask
+#endif
 
 /* Mutexes
  */