mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-01 10:06:57 +03:00
Finish user stack support. Change locking code to be safe in situations with different priorities.
1998-06-25 19:27 Ulrich Drepper <drepper@cygnus.com> * attr.c: Finish user stack support. Change locking code to be safe in situations with different priorities. * cancel.c: Likewise. * condvar.c: Likewise. * internals.h: Likewise. * join.c: Likewise. * manager.c: Likewise. * mutex.c: Likewise. * pthread.c: Likewise. * ptlongjmp.c: Likewise. * queue.h: Likewise. * rwlock.c: Likewise. * semaphore.c: Likewise. * semaphore.h: Likewise. * signals.c: Likewise. * spinlock.c: Likewise. * spinlock.h: Likewise. Patches by Xavier leroy. 1998-06-25 Ulrich Drepper <drepper@cygnus.com> * sysdeps/pthread/pthread.h: Make [sg]et_stacksize and [sg]et_stackaddr prototypes always available. * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define _POSIX_THREAD_ATTR_STACKSIZE and _POSIX_THREAD_ATTR_STACKADDR.
This commit is contained in:
@ -53,14 +53,14 @@ int pthread_cancel(pthread_t thread)
|
||||
pthread_handle handle = thread_handle(thread);
|
||||
int pid;
|
||||
|
||||
acquire(&handle->h_spinlock);
|
||||
__pthread_lock(&handle->h_lock);
|
||||
if (invalid_handle(handle, thread)) {
|
||||
release(&handle->h_spinlock);
|
||||
__pthread_unlock(&handle->h_lock);
|
||||
return ESRCH;
|
||||
}
|
||||
handle->h_descr->p_canceled = 1;
|
||||
pid = handle->h_descr->p_pid;
|
||||
release(&handle->h_spinlock);
|
||||
__pthread_unlock(&handle->h_lock);
|
||||
kill(pid, PTHREAD_SIG_CANCEL);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user