diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-07-08 03:40:49 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-07-08 03:40:49 +0000 |
commit | db54f488ee24b14027c485e0005950dfdd5ef885 (patch) | |
tree | 2a07a1746c1ffa758a34484f65263c737818d162 /nptl/allocatestack.c | |
parent | 5fee5ad11c5307141f76aa7ea28ec1e1b6418fea (diff) | |
download | glibc-db54f488ee24b14027c485e0005950dfdd5ef885.tar.gz glibc-db54f488ee24b14027c485e0005950dfdd5ef885.tar.xz glibc-db54f488ee24b14027c485e0005950dfdd5ef885.zip |
Update.
2003-07-07 Ulrich Drepper <drepper@redhat.com> * descr.h (struct pthread): Add pid field. * allocatestack.c (allocate_stack): Initialize pid field in descriptor. (__reclaim_stacks): Likewise. * init.c (sigcancel_handler): If __ASSUME_CORRECT_SI_PID is defined also check for PID of the signal source. (__pthread_initialize_minimal_internal): Also initialize pid field of initial thread's descriptor. * pthread_cancel.c: Use tgkill instead of tkill if possible. * sysdeps/unix/sysv/linux/fork.c: Likewise. * sysdeps/unix/sysv/linux/pt-raise.c: Likewise. * sysdeps/unix/sysv/linux/pthread_kill.c: Likewise. * sysdeps/unix/sysv/linux/raise.c: Likewise.
Diffstat (limited to 'nptl/allocatestack.c')
-rw-r--r-- | nptl/allocatestack.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c index 223f0e445d..e042cf4840 100644 --- a/nptl/allocatestack.c +++ b/nptl/allocatestack.c @@ -332,6 +332,9 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp, pd->header.sysinfo = THREAD_GETMEM (THREAD_SELF, header.sysinfo); #endif + /* The process ID is also the same as that of the caller. */ + pd->pid = THREAD_GETMEM (THREAD_SELF, pid); + /* Allocate the DTV for this thread. */ if (_dl_allocate_tls (TLS_TPADJ (pd)) == NULL) /* Something went wrong. */ @@ -464,6 +467,9 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp, pd->header.sysinfo = THREAD_GETMEM (THREAD_SELF, header.sysinfo); #endif + /* The process ID is also the same as that of the caller. */ + pd->pid = THREAD_GETMEM (THREAD_SELF, pid); + /* Allocate the DTV for this thread. */ if (_dl_allocate_tls (TLS_TPADJ (pd)) == NULL) { @@ -626,6 +632,9 @@ __reclaim_stacks (void) /* This marks the stack as free. */ curp->tid = 0; + /* The PID field must be initialized for the new process. */ + curp->pid = self->pid; + /* Account for the size of the stack. */ stack_cache_actsize += curp->stackblock_size; } |