summaryrefslogtreecommitdiff
path: root/libguile/gen-scmconfig.c
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2009-10-02 16:32:34 +0200
committerLudovic Courtès <ludo@gnu.org>2009-10-09 14:10:05 +0200
commit705edb959b3093cb1cbe1390110d96ee833b63fc (patch)
tree2f1157be12074243695c7179ac0be432de6c3527 /libguile/gen-scmconfig.c
parent46935a1fac58e50276f7e7e49e5fa6bab53c0848 (diff)
downloadguile-705edb959b3093cb1cbe1390110d96ee833b63fc.tar.gz
Use TLS when available for `SCM_I_CURRENT_THREAD'.
* acinclude.m4 (GUILE_THREAD_LOCAL_STORAGE): New macro. * configure.ac: Use it. * libguile/__scm.h (SCM_THREAD_LOCAL): New macro. * libguile/gen-scmconfig.c (main): Define `SCM_HAVE_THREAD_STORAGE_CLASS'. * libguile/gen-scmconfig.h.in (SCM_I_GSC_HAVE_THREAD_STORAGE_CLASS): New. * libguile/threads.c (scm_i_current_thread)[SCM_HAVE_THREAD_STORAGE_CLASS]: New. (SET_CURRENT_THREAD): New macro. (guilify_self_1, on_thread_exit, init_thread_key): Use it. * libguile/threads.h (scm_i_current_thread)[SCM_HAVE_THREAD_STORAGE_CLASS]: New declaration. (SCM_I_CURRENT_THREAD)[SCM_HAVE_THREAD_STORAGE_CLASS]: New macro. (init_thread_key_once, init_thread_key): Conditionalize on `!defined SCM_HAVE_THREAD_STORAGE_CLASS'. (scm_i_init_thread_for_guile): Update accordingly.
Diffstat (limited to 'libguile/gen-scmconfig.c')
-rw-r--r--libguile/gen-scmconfig.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/libguile/gen-scmconfig.c b/libguile/gen-scmconfig.c
index 0e897ca8c..bc0c2df20 100644
--- a/libguile/gen-scmconfig.c
+++ b/libguile/gen-scmconfig.c
@@ -404,6 +404,13 @@ main (int argc, char *argv[])
pf ("typedef long int scm_t_off;\n");
#endif
+ pf ("/* Define to 1 if the compiler supports the "
+ "`__thread' storage class. */\n");
+ if (SCM_I_GSC_HAVE_THREAD_STORAGE_CLASS)
+ pf ("#define SCM_HAVE_THREAD_STORAGE_CLASS\n");
+ else
+ pf ("/* #undef SCM_HAVE_THREAD_STORAGE_CLASS */\n");
+
#if USE_DLL_IMPORT
pf ("\n");
pf ("/* Define some additional CPP macros on Win32 platforms. */\n");