Lines Matching refs:thread
48 _pthread_suspend_np(pthread_t thread) in _pthread_suspend_np() argument
54 if (thread == _get_curthread()) in _pthread_suspend_np()
58 else if ((ret = _thr_ref_add(curthread, thread, /*include dead*/0)) in _pthread_suspend_np()
61 THR_THREAD_LOCK(curthread, thread); in _pthread_suspend_np()
62 suspend_common(curthread, thread, 1); in _pthread_suspend_np()
64 THR_THREAD_UNLOCK(curthread, thread); in _pthread_suspend_np()
67 _thr_ref_delete(curthread, thread); in _pthread_suspend_np()
107 struct pthread *thread; in _pthread_suspend_all_np() local
115 TAILQ_FOREACH(thread, &_thread_list, tle) { in _pthread_suspend_all_np()
116 if (thread != curthread) { in _pthread_suspend_all_np()
117 THR_THREAD_LOCK(curthread, thread); in _pthread_suspend_all_np()
118 if (thread->state != PS_DEAD && in _pthread_suspend_all_np()
119 !(thread->flags & THR_FLAGS_SUSPENDED)) in _pthread_suspend_all_np()
120 thread->flags |= THR_FLAGS_NEED_SUSPEND; in _pthread_suspend_all_np()
121 THR_THREAD_UNLOCK(curthread, thread); in _pthread_suspend_all_np()
127 TAILQ_FOREACH(thread, &_thread_list, tle) { in _pthread_suspend_all_np()
128 if (thread != curthread) { in _pthread_suspend_all_np()
130 THR_THREAD_LOCK(curthread, thread); in _pthread_suspend_all_np()
131 ret = suspend_common(curthread, thread, 0); in _pthread_suspend_all_np()
135 THR_REF_ADD(curthread, thread); in _pthread_suspend_all_np()
136 suspend_common(curthread, thread, 1); in _pthread_suspend_all_np()
137 THR_REF_DEL(curthread, thread); in _pthread_suspend_all_np()
138 _thr_try_gc(curthread, thread); in _pthread_suspend_all_np()
149 THR_THREAD_UNLOCK(curthread, thread); in _pthread_suspend_all_np()
159 suspend_common(struct pthread *curthread, struct pthread *thread, in suspend_common() argument
164 while (thread->state != PS_DEAD && in suspend_common()
165 !(thread->flags & THR_FLAGS_SUSPENDED)) { in suspend_common()
166 thread->flags |= THR_FLAGS_NEED_SUSPEND; in suspend_common()
168 if (thread->tid == TID_TERMINATED) in suspend_common()
170 tmp = thread->cycle; in suspend_common()
171 _thr_send_sig(thread, SIGCANCEL); in suspend_common()
172 THR_THREAD_UNLOCK(curthread, thread); in suspend_common()
174 _thr_umtx_wait_uint(&thread->cycle, tmp, NULL, 0); in suspend_common()
175 THR_THREAD_LOCK(curthread, thread); in suspend_common()
177 THR_THREAD_LOCK(curthread, thread); in suspend_common()