Lines Matching defs:joiner
46 struct pthread *joiner;
72 joiner = pthread->joiner;
73 if ((joiner != NULL) && (joiner->kseg == pthread->kseg)) {
75 * We already own the scheduler lock for the joiner.
76 * Take advantage of that and make the joiner runnable.
78 if (joiner->join_status.thread == pthread) {
82 joiner->join_status.error = ESRCH;
83 joiner->join_status.ret = NULL;
84 joiner->join_status.thread = NULL;
86 kmbx = _thr_setrunnable_unlocked(joiner);
88 joiner = NULL;
92 if ((joiner != NULL) &&
93 (_thr_ref_add(curthread, joiner, 0) == 0)) {
94 /* Lock the joiner before fiddling with it. */
95 THR_SCHED_LOCK(curthread, joiner);
96 if (joiner->join_status.thread == pthread) {
100 joiner->join_status.error = ESRCH;
101 joiner->join_status.ret = NULL;
102 joiner->join_status.thread = NULL;
104 kmbx = _thr_setrunnable_unlocked(joiner);
106 THR_SCHED_UNLOCK(curthread, joiner);
107 _thr_ref_delete(curthread, joiner);