From: Nicholas Nethercote Date: Thu, 12 May 2005 03:47:31 +0000 (+0000) Subject: Replace two exported functions with one. X-Git-Tag: svn/VALGRIND_3_0_0~649 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f557a7f16bda0338cad4bc8e5a018c59070a02fe;p=thirdparty%2Fvalgrind.git Replace two exported functions with one. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3669 --- diff --git a/coregrind/core.h b/coregrind/core.h index e6ad55d213..8e035d73e7 100644 --- a/coregrind/core.h +++ b/coregrind/core.h @@ -546,11 +546,8 @@ extern Int VG_(do_sys_sigprocmask) ( ThreadId tid, Int how, vki_sigset_t* set, vki_sigset_t* oldset ); -/* Handy utilities to block/restore all host signals. */ -extern void VG_(block_all_host_signals) - ( /* OUT */ vki_sigset_t* saved_mask ); -extern void VG_(restore_all_host_signals) - ( /* IN */ vki_sigset_t* saved_mask ); +extern void VG_(clear_out_queued_signals) + ( ThreadId tid, /* OUT */ vki_sigset_t* saved_mask ); extern void VG_(kill_self)(Int sigNo); diff --git a/coregrind/vg_scheduler.c b/coregrind/vg_scheduler.c index ea8c0ad972..87ab433c89 100644 --- a/coregrind/vg_scheduler.c +++ b/coregrind/vg_scheduler.c @@ -578,13 +578,7 @@ void mostly_clear_thread_record ( ThreadId tid ) VG_(threads)[tid].altstack.ss_size = 0; VG_(threads)[tid].altstack.ss_flags = VKI_SS_DISABLE; - /* clear out queued signals */ - VG_(block_all_host_signals)(&savedmask); - if (VG_(threads)[tid].sig_queue != NULL) { - VG_(arena_free)(VG_AR_CORE, VG_(threads)[tid].sig_queue); - VG_(threads)[tid].sig_queue = NULL; - } - VG_(restore_all_host_signals)(&savedmask); + VG_(clear_out_queued_signals)(tid, &savedmask); VG_(threads)[tid].sched_jmpbuf_valid = False; } diff --git a/coregrind/vg_signals.c b/coregrind/vg_signals.c index fdcb15d8e4..0d00888eef 100644 --- a/coregrind/vg_signals.c +++ b/coregrind/vg_signals.c @@ -727,7 +727,7 @@ int VG_(do_sys_sigprocmask) ( ThreadId tid, ------------------------------------------------------------------ */ /* Block all host signals, dumping the old mask in *saved_mask. */ -void VG_(block_all_host_signals) ( /* OUT */ vki_sigset_t* saved_mask ) +static void block_all_host_signals ( /* OUT */ vki_sigset_t* saved_mask ) { Int ret; vki_sigset_t block_procmask; @@ -738,13 +738,23 @@ void VG_(block_all_host_signals) ( /* OUT */ vki_sigset_t* saved_mask ) } /* Restore the blocking mask using the supplied saved one. */ -void VG_(restore_all_host_signals) ( /* IN */ vki_sigset_t* saved_mask ) +static void restore_all_host_signals ( /* IN */ vki_sigset_t* saved_mask ) { Int ret; ret = VG_(sigprocmask)(VKI_SIG_SETMASK, saved_mask, NULL); vg_assert(ret == 0); } +void VG_(clear_out_queued_signals)( ThreadId tid, vki_sigset_t* saved_mask ) +{ + block_all_host_signals(saved_mask); + if (VG_(threads)[tid].sig_queue != NULL) { + VG_(arena_free)(VG_AR_CORE, VG_(threads)[tid].sig_queue); + VG_(threads)[tid].sig_queue = NULL; + } + restore_all_host_signals(saved_mask); +} + Bool VG_(client_signal_OK)(Int sigNo) { /* signal 0 is OK for kill */ @@ -1552,7 +1562,7 @@ void queue_signal(ThreadId tid, const vki_siginfo_t *si) tst = VG_(get_ThreadState)(tid); /* Protect the signal queue against async deliveries */ - VG_(block_all_host_signals)(&savedmask); + block_all_host_signals(&savedmask); if (tst->sig_queue == NULL) { tst->sig_queue = VG_(arena_malloc)(VG_AR_CORE, sizeof(*tst->sig_queue)); @@ -1577,7 +1587,7 @@ void queue_signal(ThreadId tid, const vki_siginfo_t *si) sq->sigs[sq->next] = *si; sq->next = (sq->next+1) % N_QUEUED_SIGNALS; - VG_(restore_all_host_signals)(&savedmask); + restore_all_host_signals(&savedmask); } /* @@ -2018,7 +2028,7 @@ void VG_(poll_signals)(ThreadId tid) //VG_(printf)("tid %d pollset=%08x%08x\n", tid, pollset.sig[1], pollset.sig[0]); - VG_(block_all_host_signals)(&saved_mask); // protect signal queue + block_all_host_signals(&saved_mask); // protect signal queue /* First look for any queued pending signals */ sip = next_queued(tid, &pollset); /* this thread */ @@ -2047,7 +2057,7 @@ void VG_(poll_signals)(ThreadId tid) where it came from */ } - VG_(restore_all_host_signals)(&saved_mask); + restore_all_host_signals(&saved_mask); } /* At startup, copy the process' real signal state to the SCSS. @@ -2064,7 +2074,7 @@ void VG_(sigstartup_actions) ( void ) /* Block all signals. saved_procmask remembers the previous mask, which the first thread inherits. */ - VG_(block_all_host_signals)( &saved_procmask ); + block_all_host_signals( &saved_procmask ); /* Copy per-signal settings to SCSS. */ for (i = 1; i <= _VKI_NSIG; i++) {