diff --git a/libguile/async.c b/libguile/async.c index 80f561d10..7defdcea8 100644 --- a/libguile/async.c +++ b/libguile/async.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2002, 2004, 2006, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2002, 2004, 2006, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -451,6 +451,8 @@ scm_init_async () { tc16_async = scm_make_smob_type ("async", 0); + scm_c_atfork_lock_static_mutex (&async_mutex); + #include "libguile/async.x" } diff --git a/libguile/deprecation.c b/libguile/deprecation.c index 5c1a246c2..04708bd24 100644 --- a/libguile/deprecation.c +++ b/libguile/deprecation.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2001, 2006, 2010, 2011 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2006, 2010, 2011, 2012 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -184,6 +184,7 @@ scm_init_deprecation () SCM_WARN_DEPRECATED = 0; atexit (print_deprecation_summary); } + scm_c_atfork_lock_static_mutex (&warn_lock); #include "libguile/deprecation.x" } diff --git a/libguile/fluids.c b/libguile/fluids.c index 282718e65..4b698e0ff 100644 --- a/libguile/fluids.c +++ b/libguile/fluids.c @@ -590,6 +590,7 @@ void scm_init_fluids () { #include "libguile/fluids.x" + scm_c_atfork_lock_static_mutex (&fluid_admin_mutex); } /* diff --git a/libguile/gc.c b/libguile/gc.c index 6d44f5e38..3269b004f 100644 --- a/libguile/gc.c +++ b/libguile/gc.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2006, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2006, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -1046,6 +1046,8 @@ scm_init_gc () GC_set_start_callback (run_before_gc_c_hook); #endif + scm_c_atfork_lock_static_mutex (&bytes_until_gc_lock); + #include "libguile/gc.x" } diff --git a/libguile/instructions.c b/libguile/instructions.c index f3b8963d2..ec02a3b35 100644 --- a/libguile/instructions.c +++ b/libguile/instructions.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2001, 2009, 2010, 2011 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -208,6 +208,7 @@ scm_bootstrap_instructions (void) "scm_init_instructions", (scm_t_extension_init_func)scm_init_instructions, NULL); + scm_c_atfork_lock_static_mutex (&itable_lock); } void diff --git a/libguile/ports.c b/libguile/ports.c index d3fc4532f..bc922b19d 100644 --- a/libguile/ports.c +++ b/libguile/ports.c @@ -2906,6 +2906,7 @@ scm_init_ports () cur_loadport_fluid = scm_make_fluid (); scm_i_port_weak_set = scm_c_make_weak_set (31); + scm_c_atfork_lock_static_mutex (&scm_ptobs_lock); #include "libguile/ports.x" diff --git a/libguile/posix.c b/libguile/posix.c index 10902010b..f5f9d068c 100644 --- a/libguile/posix.c +++ b/libguile/posix.c @@ -2252,6 +2252,8 @@ scm_init_posix () #include "libguile/cpp-SIG.c" #include "libguile/posix.x" + + scm_c_atfork_lock_static_mutex (&scm_i_locale_mutex); } /* diff --git a/libguile/strings.c b/libguile/strings.c index 961705782..9f03324f4 100644 --- a/libguile/strings.c +++ b/libguile/strings.c @@ -2333,6 +2333,8 @@ scm_init_strings () { scm_nullstr = scm_i_make_string (0, NULL, 0); + scm_c_atfork_lock_static_mutex (&stringbuf_write_mutex); + #include "libguile/strings.x" } diff --git a/libguile/threads.c b/libguile/threads.c index d5c51eaf3..bbb7c7b9f 100644 --- a/libguile/threads.c +++ b/libguile/threads.c @@ -2194,6 +2194,10 @@ scm_init_threads () threads_initialized_p = 1; dynwind_critical_section_mutex = scm_make_recursive_mutex (); + + scm_c_atfork_lock_static_mutex (&scm_i_critical_section_mutex); + scm_c_atfork_lock_static_mutex (&scm_i_misc_mutex); + scm_c_atfork_lock_static_mutex (&thread_admin_mutex); } void