>From f9f3407212edb967b97d14f007919e7ee0927135 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 8 Aug 2020 22:05:25 +0200 Subject: [PATCH 2/4] fatal-signal: Use module 'thread-optim'. * lib/fatal-signal.c: Include thread-optim.h. (at_fatal_signal, block_fatal_signals, unblock_fatal_signals): Use IF_MT macro. * modules/fatal-signal (Depends-on): Add thread-optim. --- ChangeLog | 8 ++++++++ lib/fatal-signal.c | 19 +++++++++++++------ modules/fatal-signal | 1 + 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index ee9b6ce..37a7a07 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2020-08-08 Bruno Haible + fatal-signal: Use module 'thread-optim'. + * lib/fatal-signal.c: Include thread-optim.h. + (at_fatal_signal, block_fatal_signals, unblock_fatal_signals): Use IF_MT + macro. + * modules/fatal-signal (Depends-on): Add thread-optim. + +2020-08-08 Bruno Haible + New module 'thread-optim'. * lib/thread-optim.h: New file. * modules/thread-optim: New file. diff --git a/lib/fatal-signal.c b/lib/fatal-signal.c index 29184e0..541c4cb 100644 --- a/lib/fatal-signal.c +++ b/lib/fatal-signal.c @@ -27,6 +27,7 @@ #include #include "glthread/lock.h" +#include "thread-optim.h" #include "sig-handler.h" #include "xalloc.h" @@ -213,7 +214,9 @@ gl_lock_define_initialized (static, at_fatal_signal_lock) void at_fatal_signal (action_t action) { - gl_lock_lock (at_fatal_signal_lock); + IF_MT_DECL; + + IF_MT gl_lock_lock (at_fatal_signal_lock); static bool cleanup_initialized = false; if (!cleanup_initialized) @@ -260,7 +263,7 @@ at_fatal_signal (action_t action) actions[actions_count].action = action; actions_count++; - gl_lock_unlock (at_fatal_signal_lock); + IF_MT gl_lock_unlock (at_fatal_signal_lock); } @@ -300,7 +303,9 @@ static unsigned int fatal_signals_block_counter = 0; void block_fatal_signals (void) { - gl_lock_lock (fatal_signals_block_lock); + IF_MT_DECL; + + IF_MT gl_lock_lock (fatal_signals_block_lock); if (fatal_signals_block_counter++ == 0) { @@ -308,14 +313,16 @@ block_fatal_signals (void) sigprocmask (SIG_BLOCK, &fatal_signal_set, NULL); } - gl_lock_unlock (fatal_signals_block_lock); + IF_MT gl_lock_unlock (fatal_signals_block_lock); } /* Stop delaying the catchable fatal signals. */ void unblock_fatal_signals (void) { - gl_lock_lock (fatal_signals_block_lock); + IF_MT_DECL; + + IF_MT gl_lock_lock (fatal_signals_block_lock); if (fatal_signals_block_counter == 0) /* There are more calls to unblock_fatal_signals() than to @@ -327,7 +334,7 @@ unblock_fatal_signals (void) sigprocmask (SIG_UNBLOCK, &fatal_signal_set, NULL); } - gl_lock_unlock (fatal_signals_block_lock); + IF_MT gl_lock_unlock (fatal_signals_block_lock); } diff --git a/modules/fatal-signal b/modules/fatal-signal index de53de7..7029687 100644 --- a/modules/fatal-signal +++ b/modules/fatal-signal @@ -13,6 +13,7 @@ stdbool unistd sigaction lock +thread-optim sigprocmask raise -- 2.7.4