summaryrefslogtreecommitdiffstats
path: root/lib/libc_r/uthread/pthread_private.h
diff options
context:
space:
mode:
authorjasone <jasone@FreeBSD.org>2001-06-27 11:41:15 +0000
committerjasone <jasone@FreeBSD.org>2001-06-27 11:41:15 +0000
commit22f14eaadfe2f54e3d94f9a549dbb55a301222e1 (patch)
tree463b1f41916ef7a7abac0e3d8230ce498dcde63c /lib/libc_r/uthread/pthread_private.h
parent97220dbd1ea90cd0e4fbc824e176960ac2efe949 (diff)
downloadFreeBSD-src-22f14eaadfe2f54e3d94f9a549dbb55a301222e1.zip
FreeBSD-src-22f14eaadfe2f54e3d94f9a549dbb55a301222e1.tar.gz
Fix a race condition in pthread_join(). All of the following must occur
atomically: 1) Search _thread_list for the thread to join. 2) Search _dead_list for the thread to join. 3) Set the running thread as the joiner. While we're at it, fix a race in the case where multiple threads try to join on the same thread. POSIX says that the behavior of multiple joiners is undefined, but the fix is cheap as a result of the other fix.
Diffstat (limited to 'lib/libc_r/uthread/pthread_private.h')
-rw-r--r--lib/libc_r/uthread/pthread_private.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/lib/libc_r/uthread/pthread_private.h b/lib/libc_r/uthread/pthread_private.h
index 3bfb7c0..6528c13 100644
--- a/lib/libc_r/uthread/pthread_private.h
+++ b/lib/libc_r/uthread/pthread_private.h
@@ -1207,7 +1207,6 @@ char *__ttyname_r_basic(int, char *, size_t);
char *ttyname_r(int, char *, size_t);
void _cond_wait_backout(pthread_t);
void _fd_lock_backout(pthread_t);
-int _find_dead_thread(pthread_t);
int _find_thread(pthread_t);
struct pthread *_get_curthread(void);
void _set_curthread(struct pthread *);
OpenPOWER on IntegriCloud