summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2006-11-28 11:05:31 +0000
committerdavidxu <davidxu@FreeBSD.org>2006-11-28 11:05:31 +0000
commit61e0842016ad2dd75f423cd81d713ea68d6e92ae (patch)
tree932a56908ed69c85dbeb7fa78866f1cb950c946d /lib
parentf5c0caf84865fdac4b22940ab3c1de794b71ed24 (diff)
downloadFreeBSD-src-61e0842016ad2dd75f423cd81d713ea68d6e92ae.zip
FreeBSD-src-61e0842016ad2dd75f423cd81d713ea68d6e92ae.tar.gz
If a thread was detached, return EINVAL instead, the error code
is also returned by pthread_detach() if a thread was already detached, the error code was already documented: > [EINVAL] The implementation has detected that the value speci- > fied by thread does not refer to a joinable thread.
Diffstat (limited to 'lib')
-rw-r--r--lib/libkse/thread/thr_join.c2
-rw-r--r--lib/libpthread/thread/thr_join.c2
-rw-r--r--lib/libthr/thread/thr_join.c2
3 files changed, 3 insertions, 3 deletions
diff --git a/lib/libkse/thread/thr_join.c b/lib/libkse/thread/thr_join.c
index 1a3452e..554c5c6 100644
--- a/lib/libkse/thread/thr_join.c
+++ b/lib/libkse/thread/thr_join.c
@@ -80,7 +80,7 @@ _pthread_join(pthread_t pthread, void **thread_return)
THR_SCHED_UNLOCK(curthread, pthread);
/* Remove the reference and return an error: */
_thr_ref_delete(curthread, pthread);
- ret = ESRCH;
+ ret = EINVAL;
} else {
/* Lock the target thread while checking its state. */
if (pthread->state == PS_DEAD) {
diff --git a/lib/libpthread/thread/thr_join.c b/lib/libpthread/thread/thr_join.c
index 1a3452e..554c5c6 100644
--- a/lib/libpthread/thread/thr_join.c
+++ b/lib/libpthread/thread/thr_join.c
@@ -80,7 +80,7 @@ _pthread_join(pthread_t pthread, void **thread_return)
THR_SCHED_UNLOCK(curthread, pthread);
/* Remove the reference and return an error: */
_thr_ref_delete(curthread, pthread);
- ret = ESRCH;
+ ret = EINVAL;
} else {
/* Lock the target thread while checking its state. */
if (pthread->state == PS_DEAD) {
diff --git a/lib/libthr/thread/thr_join.c b/lib/libthr/thread/thr_join.c
index 92a3b62..139c74c 100644
--- a/lib/libthr/thread/thr_join.c
+++ b/lib/libthr/thread/thr_join.c
@@ -88,7 +88,7 @@ join_common(pthread_t pthread, void **thread_return,
if ((ret = _thr_find_thread(curthread, pthread, 1)) != 0) {
ret = ESRCH;
} else if ((pthread->tlflags & TLFLAGS_DETACHED) != 0) {
- ret = ESRCH;
+ ret = EINVAL;
} else if (pthread->joiner != NULL) {
/* Multiple joiners are not supported. */
ret = ENOTSUP;
OpenPOWER on IntegriCloud