mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Update.
* internals.h: Declare __pthread_last_event. * manager.c: Define __pthread_last_event. (pthread_handle_create): Set __pthread_last_event. (pthread_exited): Likewise. * join.c (pthread_exit): Likewise.
This commit is contained in:
@ -1,5 +1,11 @@
|
||||
1999-11-02 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* internals.h: Declare __pthread_last_event.
|
||||
* manager.c: Define __pthread_last_event.
|
||||
(pthread_handle_create): Set __pthread_last_event.
|
||||
(pthread_exited): Likewise.
|
||||
* join.c (pthread_exit): Likewise.
|
||||
|
||||
* Makefile (libpthread-routines): Add events.
|
||||
* events.c: New file.
|
||||
* internals.h: Protect against multiple inclusion.
|
||||
|
@ -229,6 +229,9 @@ extern volatile int __pthread_threads_debug;
|
||||
/* Globally enabled events. */
|
||||
extern volatile td_thr_events_t __pthread_threads_events;
|
||||
|
||||
/* Pointer to descriptor of thread with last event. */
|
||||
extern volatile pthread_descr __pthread_last_event;
|
||||
|
||||
/* Return the handle corresponding to a thread id */
|
||||
|
||||
static inline pthread_handle thread_handle(pthread_t id)
|
||||
|
@ -54,6 +54,7 @@ void pthread_exit(void * retval)
|
||||
/* Yep, we have to signal the death. */
|
||||
THREAD_SETMEM(self, p_eventbuf.eventnum, TD_DEATH);
|
||||
THREAD_SETMEM(self, p_eventbuf.eventdata, self);
|
||||
__pthread_last_event = self;
|
||||
|
||||
/* Now call the function to signal the event. */
|
||||
__linuxthreads_death_event();
|
||||
|
@ -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();
|
||||
|
Reference in New Issue
Block a user