diff options
Diffstat (limited to 'linuxthreads/manager.c')
-rw-r--r-- | linuxthreads/manager.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/linuxthreads/manager.c b/linuxthreads/manager.c index 3b70097232..21a3f6875f 100644 --- a/linuxthreads/manager.c +++ b/linuxthreads/manager.c @@ -55,6 +55,9 @@ volatile int __pthread_threads_debug; /* Globally enabled events. */ volatile td_thr_events_t __pthread_threads_events; +/* Pointer to thread descriptor with last event. */ +volatile pthread_descr __pthread_last_event; + /* Mapping from stack segment to thread descriptor. */ /* Stack segment numbers are also indices into the __pthread_handles array. */ /* Stack segment number 0 is reserved for the initial thread. */ @@ -422,6 +425,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr, already scheduled when we send the event. */ new_thread->p_eventbuf.eventdata = new_thread; new_thread->p_eventbuf.eventnum = TD_CREATE; + __pthread_last_event = new_thread; /* Now call the function which signals the event. */ __linuxthreads_create_event (); @@ -523,6 +527,7 @@ static void pthread_exited(pid_t pid) /* Yep, we have to signal the death. */ th->p_eventbuf.eventnum = TD_DEATH; th->p_eventbuf.eventdata = th; + __pthread_last_event = th; /* Now call the function to signal the event. */ __linuxthreads_reap_event(); |