Changeset View
Changeset View
Standalone View
Standalone View
head/lib/libthr/thread/thr_join.c
Show All 34 Lines | |||||
#include "un-namespace.h" | #include "un-namespace.h" | ||||
#include "thr_private.h" | #include "thr_private.h" | ||||
int _pthread_timedjoin_np(pthread_t pthread, void **thread_return, | int _pthread_timedjoin_np(pthread_t pthread, void **thread_return, | ||||
const struct timespec *abstime); | const struct timespec *abstime); | ||||
static int join_common(pthread_t, void **, const struct timespec *); | static int join_common(pthread_t, void **, const struct timespec *); | ||||
__weak_reference(_pthread_join, pthread_join); | __weak_reference(_thr_join, pthread_join); | ||||
__weak_reference(_thr_join, _pthread_join); | |||||
__weak_reference(_pthread_timedjoin_np, pthread_timedjoin_np); | __weak_reference(_pthread_timedjoin_np, pthread_timedjoin_np); | ||||
static void backout_join(void *arg) | static void backout_join(void *arg) | ||||
{ | { | ||||
struct pthread *pthread = (struct pthread *)arg; | struct pthread *pthread = (struct pthread *)arg; | ||||
struct pthread *curthread = _get_curthread(); | struct pthread *curthread = _get_curthread(); | ||||
THR_THREAD_LOCK(curthread, pthread); | THR_THREAD_LOCK(curthread, pthread); | ||||
pthread->joiner = NULL; | pthread->joiner = NULL; | ||||
THR_THREAD_UNLOCK(curthread, pthread); | THR_THREAD_UNLOCK(curthread, pthread); | ||||
} | } | ||||
int | int | ||||
_pthread_join(pthread_t pthread, void **thread_return) | _thr_join(pthread_t pthread, void **thread_return) | ||||
{ | { | ||||
return (join_common(pthread, thread_return, NULL)); | return (join_common(pthread, thread_return, NULL)); | ||||
} | } | ||||
int | int | ||||
_pthread_timedjoin_np(pthread_t pthread, void **thread_return, | _pthread_timedjoin_np(pthread_t pthread, void **thread_return, | ||||
const struct timespec *abstime) | const struct timespec *abstime) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 86 Lines • Show Last 20 Lines |