Added two new events: pre_deliver_signal and post_deliver_signal.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1434
This commit is contained in:
Nicholas Nethercote 2003-02-24 10:36:48 +00:00
parent 48b80f2249
commit 08f8bf00c2
3 changed files with 49 additions and 28 deletions

View File

@ -389,8 +389,12 @@ typedef
void (*post_mutex_unlock) ( ThreadId tid,
void* /*pthread_mutex_t* */ mutex );
/* Signal events (not exhaustive) */
void (*pre_deliver_signal) ( ThreadId tid, Int sigNo, Bool alt_stack );
void (*post_deliver_signal) ( ThreadId tid, Int sigNo );
/* Others... condition variable, signal events... */
/* Others... condition variable... */
/* ... */
}
VgTrackEvents;

View File

@ -64,42 +64,46 @@ VgNeeds VG_(needs) = {
VgTrackEvents VG_(track_events) = {
/* Memory events */
.new_mem_startup = NULL,
.new_mem_heap = NULL,
.new_mem_stack = NULL,
.new_mem_stack_aligned = NULL,
.new_mem_stack_signal = NULL,
.new_mem_brk = NULL,
.new_mem_mmap = NULL,
.new_mem_startup = NULL,
.new_mem_heap = NULL,
.new_mem_stack = NULL,
.new_mem_stack_aligned = NULL,
.new_mem_stack_signal = NULL,
.new_mem_brk = NULL,
.new_mem_mmap = NULL,
.copy_mem_heap = NULL,
.copy_mem_remap = NULL,
.change_mem_mprotect = NULL,
.copy_mem_heap = NULL,
.copy_mem_remap = NULL,
.change_mem_mprotect = NULL,
.ban_mem_heap = NULL,
.ban_mem_stack = NULL,
.ban_mem_heap = NULL,
.ban_mem_stack = NULL,
.die_mem_heap = NULL,
.die_mem_stack = NULL,
.die_mem_stack_aligned = NULL,
.die_mem_stack_signal = NULL,
.die_mem_brk = NULL,
.die_mem_munmap = NULL,
.die_mem_heap = NULL,
.die_mem_stack = NULL,
.die_mem_stack_aligned = NULL,
.die_mem_stack_signal = NULL,
.die_mem_brk = NULL,
.die_mem_munmap = NULL,
.bad_free = NULL,
.mismatched_free = NULL,
.bad_free = NULL,
.mismatched_free = NULL,
.pre_mem_read = NULL,
.pre_mem_read_asciiz = NULL,
.pre_mem_write = NULL,
.post_mem_write = NULL,
.pre_mem_read = NULL,
.pre_mem_read_asciiz = NULL,
.pre_mem_write = NULL,
.post_mem_write = NULL,
/* Scheduler events */
.thread_run = NULL,
.thread_run = NULL,
/* Mutex events */
.post_mutex_lock = NULL,
.post_mutex_unlock = NULL,
.post_mutex_lock = NULL,
.post_mutex_unlock = NULL,
/* Signal events */
.pre_deliver_signal = NULL,
.post_deliver_signal = NULL,
};
/* static */
@ -217,6 +221,9 @@ TRACK( pre_mutex_lock, ThreadId tid, void* /*pthread_mutex_t* */ mutex)
TRACK(post_mutex_lock, ThreadId tid, void* /*pthread_mutex_t* */ mutex)
TRACK(post_mutex_unlock, ThreadId tid, void* /*pthread_mutex_t* */ mutex)
TRACK(pre_deliver_signal, ThreadId tid, Int sigNum, Bool alt_stack)
TRACK(post_deliver_signal, ThreadId tid, Int sigNum)
/*--------------------------------------------------------------------*/
/* UCodeBlocks */

View File

@ -950,8 +950,15 @@ void vg_push_signal_frame ( ThreadId tid, int sigNo )
VG_(message)(Vg_DebugMsg,
"delivering signal %d to thread %d: on ALT STACK",
sigNo, tid );
/* Signal delivery to skins */
VG_TRACK( pre_deliver_signal, tid, sigNo, /*alt_stack*/False );
} else {
esp_top_of_frame = tst->m_esp;
/* Signal delivery to skins */
VG_TRACK( pre_deliver_signal, tid, sigNo, /*alt_stack*/True );
}
esp = esp_top_of_frame;
@ -1065,6 +1072,9 @@ Int vg_pop_signal_frame ( ThreadId tid )
was delivered. */
tst->status = frame->status;
/* Notify skins */
VG_TRACK( post_deliver_signal, tid, sigNo );
return sigNo;
}