diff options
author | Ludovic Courtès <ludo@gnu.org> | 2009-10-02 16:32:34 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2009-10-09 14:10:05 +0200 |
commit | 705edb959b3093cb1cbe1390110d96ee833b63fc (patch) | |
tree | 2f1157be12074243695c7179ac0be432de6c3527 /libguile/gen-scmconfig.c | |
parent | 46935a1fac58e50276f7e7e49e5fa6bab53c0848 (diff) | |
download | guile-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.c | 7 |
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"); |