From 90fed973abf1d55212d7a43f8450f5fe76d9e6a2 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 3 Apr 2011 22:03:56 +0200 Subject: [PATCH] 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. --- configure.ac | 2 +- libguile/gen-scmconfig.c | 6 ++++++ libguile/pthread-threads.h | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) 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 */