diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-04-13 05:57:21 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-04-13 05:57:21 +0000 |
commit | d8d914df6806c6057b20c7311cad0bc2ac201c03 (patch) | |
tree | 6d2512373ef92b0abbebd4e0d0761cdd9715ea0b /linuxthreads/cancel.c | |
parent | b3ae0650bcff54f12d87f878000d4c488b365bf7 (diff) | |
download | glibc-d8d914df6806c6057b20c7311cad0bc2ac201c03.zip glibc-d8d914df6806c6057b20c7311cad0bc2ac201c03.tar.gz glibc-d8d914df6806c6057b20c7311cad0bc2ac201c03.tar.bz2 |
Update.
* sysdeps/pthread/pthread.h: Add prototypes for pthread_spin_init,
pthread_spin_destroy, pthread_spin_lock, pthread_spin_trylock,
and pthread_spin_unlock.
* sysdeps/pthread/bits/pthreadtypes.h: Change struct _pthread_fastlock
into pthread_spinlock_t. Change all uses.
* spinlock.c: Implement pthread_spin_lock.
Rename __pthread_unlock to __pthread_spin_unlock and define weak
alias for real name.
Define pthread_spin_trylock, pthread_spin_init, and
pthread_spin_destroy.
Change all uses of _pthread_fastlock to pthread_spinlock_t.
* spinlock.h: Rename __pthread_unlock to __pthread_spin_unlock.
Change all uses of _pthread_fastlock to pthread_spinlock_t.
* Versions [libpthread] (GLIBC_2.2): Add pthread_spin_init,
pthread_spin_destroy, pthread_spin_lock, pthread_spin_trylock,
and pthread_spin_unlock.
* cancel.c: Use __pthread_spin_unlock instead of __pthread_unlock.
Change all uses of _pthread_fastlock to pthread_spinlock_t.
* condvar.c: Likewise.
* internals.h: Likewise.
* join.c: Likewise.
* manager.c: Likewise.
* mutex.c: Likewise.
* pthread.c: Likewise.
* rwlock.c: Likewise.
* semaphore.c: Likewise.
* signals.c: Likewise.
Diffstat (limited to 'linuxthreads/cancel.c')
-rw-r--r-- | linuxthreads/cancel.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/linuxthreads/cancel.c b/linuxthreads/cancel.c index e1e887e..067e3f6 100644 --- a/linuxthreads/cancel.c +++ b/linuxthreads/cancel.c @@ -58,14 +58,14 @@ int pthread_cancel(pthread_t thread) __pthread_lock(&handle->h_lock, NULL); if (invalid_handle(handle, thread)) { - __pthread_unlock(&handle->h_lock); + __pthread_spin_unlock(&handle->h_lock); return ESRCH; } th = handle->h_descr; if (th->p_canceled) { - __pthread_unlock(&handle->h_lock); + __pthread_spin_unlock(&handle->h_lock); return 0; } @@ -76,7 +76,7 @@ int pthread_cancel(pthread_t thread) /* If the thread has registered an extrication interface, then invoke the interface. If it returns 1, then we succeeded in dequeuing the thread from whatever waiting object it was enqueued - with. In that case, it is our responsibility to wake it up. + with. In that case, it is our responsibility to wake it up. And also to set the p_woken_by_cancel flag so the woken thread can tell that it was woken by cancellation. */ @@ -85,7 +85,7 @@ int pthread_cancel(pthread_t thread) th->p_woken_by_cancel = dorestart; } - __pthread_unlock(&handle->h_lock); + __pthread_spin_unlock(&handle->h_lock); /* If the thread has suspended or is about to, then we unblock it by issuing a restart, instead of a cancel signal. Otherwise we send @@ -97,7 +97,7 @@ int pthread_cancel(pthread_t thread) if (dorestart) restart(th); - else + else kill(pid, __pthread_sig_cancel); return 0; |