|
From: <sv...@va...> - 2005-05-12 03:47:35
|
Author: njn
Date: 2005-05-12 04:47:31 +0100 (Thu, 12 May 2005)
New Revision: 3669
Modified:
trunk/coregrind/core.h
trunk/coregrind/vg_scheduler.c
trunk/coregrind/vg_signals.c
Log:
Replace two exported functions with one.
Modified: trunk/coregrind/core.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/core.h 2005-05-11 23:37:18 UTC (rev 3668)
+++ trunk/coregrind/core.h 2005-05-12 03:47:31 UTC (rev 3669)
@@ -546,11 +546,8 @@
vki_sigset_t* set,
vki_sigset_t* oldset );
=20
-/* Handy utilities to block/restore all host signals. */
-extern void VG_(block_all_host_signals)=20
- ( /* OUT */ vki_sigset_t* saved_mask );
-extern void VG_(restore_all_host_signals)=20
- ( /* IN */ vki_sigset_t* saved_mask );
+extern void VG_(clear_out_queued_signals)=20
+ ( ThreadId tid, /* OUT */ vki_sigset_t* saved_mask );
=20
extern void VG_(kill_self)(Int sigNo);
=20
Modified: trunk/coregrind/vg_scheduler.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_scheduler.c 2005-05-11 23:37:18 UTC (rev 3668)
+++ trunk/coregrind/vg_scheduler.c 2005-05-12 03:47:31 UTC (rev 3669)
@@ -578,13 +578,7 @@
VG_(threads)[tid].altstack.ss_size =3D 0;
VG_(threads)[tid].altstack.ss_flags =3D VKI_SS_DISABLE;
=20
- /* clear out queued signals */
- VG_(block_all_host_signals)(&savedmask);
- if (VG_(threads)[tid].sig_queue !=3D NULL) {
- VG_(arena_free)(VG_AR_CORE, VG_(threads)[tid].sig_queue);
- VG_(threads)[tid].sig_queue =3D NULL;
- }
- VG_(restore_all_host_signals)(&savedmask);
+ VG_(clear_out_queued_signals)(tid, &savedmask);
=20
VG_(threads)[tid].sched_jmpbuf_valid =3D False;
}
Modified: trunk/coregrind/vg_signals.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_signals.c 2005-05-11 23:37:18 UTC (rev 3668)
+++ trunk/coregrind/vg_signals.c 2005-05-12 03:47:31 UTC (rev 3669)
@@ -727,7 +727,7 @@
------------------------------------------------------------------ */
=20
/* 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 @@
}
=20
/* 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 =3D VG_(sigprocmask)(VKI_SIG_SETMASK, saved_mask, NULL);
vg_assert(ret =3D=3D 0);
}
=20
+void VG_(clear_out_queued_signals)( ThreadId tid, vki_sigset_t* saved_ma=
sk )
+{
+ block_all_host_signals(saved_mask);
+ if (VG_(threads)[tid].sig_queue !=3D NULL) {
+ VG_(arena_free)(VG_AR_CORE, VG_(threads)[tid].sig_queue);
+ VG_(threads)[tid].sig_queue =3D NULL;
+ }
+ restore_all_host_signals(saved_mask);
+}
+
Bool VG_(client_signal_OK)(Int sigNo)
{
/* signal 0 is OK for kill */
@@ -1552,7 +1562,7 @@
tst =3D VG_(get_ThreadState)(tid);
=20
/* Protect the signal queue against async deliveries */
- VG_(block_all_host_signals)(&savedmask);
+ block_all_host_signals(&savedmask);
=20
if (tst->sig_queue =3D=3D NULL) {
tst->sig_queue =3D VG_(arena_malloc)(VG_AR_CORE, sizeof(*tst->sig_=
queue));
@@ -1577,7 +1587,7 @@
sq->sigs[sq->next] =3D *si;
sq->next =3D (sq->next+1) % N_QUEUED_SIGNALS;
=20
- VG_(restore_all_host_signals)(&savedmask);
+ restore_all_host_signals(&savedmask);
}
=20
/*
@@ -2018,7 +2028,7 @@
=20
//VG_(printf)("tid %d pollset=3D%08x%08x\n", tid, pollset.sig[1], pol=
lset.sig[0]);
=20
- VG_(block_all_host_signals)(&saved_mask); // protect signal queue
+ block_all_host_signals(&saved_mask); // protect signal queue
=20
/* First look for any queued pending signals */
sip =3D next_queued(tid, &pollset); /* this thread */
@@ -2047,7 +2057,7 @@
where it came from */
}
=20
- VG_(restore_all_host_signals)(&saved_mask);
+ restore_all_host_signals(&saved_mask);
}
=20
/* At startup, copy the process' real signal state to the SCSS.
@@ -2064,7 +2074,7 @@
/* 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 );
=20
/* Copy per-signal settings to SCSS. */
for (i =3D 1; i <=3D _VKI_NSIG; i++) {
|