mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
Remove last critical section use
* libguile/scmsigs.c (signal_handler_lock): New variable. (scm_sigaction_for_thread): Block asyncs and use a mutex instead of using scm_dynwind_critical_section.
This commit is contained in:
parent
2e2396d28c
commit
65268ff37a
1 changed files with 4 additions and 1 deletions
|
@ -86,6 +86,8 @@
|
|||
signal_handler_threads points to the thread that a signal should be
|
||||
delivered to.
|
||||
*/
|
||||
static scm_i_pthread_mutex_t signal_handler_lock =
|
||||
SCM_I_PTHREAD_MUTEX_INITIALIZER;
|
||||
static SCM *signal_handlers;
|
||||
static SCM signal_handler_asyncs;
|
||||
static SCM signal_handler_threads;
|
||||
|
@ -335,7 +337,8 @@ SCM_DEFINE (scm_sigaction_for_thread, "sigaction", 1, 3, 0,
|
|||
scm_i_ensure_signal_delivery_thread ();
|
||||
|
||||
scm_dynwind_begin (0);
|
||||
scm_dynwind_critical_section (SCM_BOOL_F);
|
||||
scm_dynwind_pthread_mutex_lock (&signal_handler_lock);
|
||||
scm_dynwind_block_asyncs ();
|
||||
|
||||
old_handler = SCM_SIMPLE_VECTOR_REF (*signal_handlers, csig);
|
||||
if (SCM_UNBNDP (handler))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue