summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2011-04-03 22:03:56 +0200
committerAndy Wingo <wingo@pobox.com>2011-04-03 22:03:56 +0200
commit90fed973abf1d55212d7a43f8450f5fe76d9e6a2 (patch)
treef110800d3c7626ce43ebdd62e2bdaff52aad5ac5
parent39bed56f670267f66d99f98cd58978871b789557 (diff)
downloadguile-90fed973abf1d55212d7a43f8450f5fe76d9e6a2.tar.gz
pthread-threads.h: only redirect to GC_pthread_sigmask if it is present
* 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.
-rw-r--r--configure.ac2
-rw-r--r--libguile/gen-scmconfig.c6
-rw-r--r--libguile/pthread-threads.h4
3 files changed, 11 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 2fd72a477..45438c8a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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
diff --git a/libguile/gen-scmconfig.c b/libguile/gen-scmconfig.c
index 97066b78e..5834346c7 100644
--- a/libguile/gen-scmconfig.c
+++ b/libguile/gen-scmconfig.c
@@ -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");
diff --git a/libguile/pthread-threads.h b/libguile/pthread-threads.h
index b5fff834d..4c67b1857 100644
--- a/libguile/pthread-threads.h
+++ b/libguile/pthread-threads.h
@@ -57,7 +57,11 @@
/* 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
*/