Lines Matching refs:tn
308 struct sigev_thread *tn; in sigev_thread_create() local
319 tn = malloc(sizeof(*tn)); in sigev_thread_create()
320 tn->tn_cur = NULL; in sigev_thread_create()
321 tn->tn_lwpid = -1; in sigev_thread_create()
322 tn->tn_refcount = 1; in sigev_thread_create()
323 _pthread_cond_init(&tn->tn_cv, NULL); in sigev_thread_create()
327 LIST_INSERT_HEAD(&sigev_threads, tn, tn_link); in sigev_thread_create()
337 ret = _pthread_create(&tn->tn_thread, &sigev_default_attr, in sigev_thread_create()
338 sigev_service_loop, tn); in sigev_thread_create()
343 LIST_REMOVE(tn, tn_link); in sigev_thread_create()
345 free(tn); in sigev_thread_create()
346 tn = NULL; in sigev_thread_create()
351 while (tn->tn_lwpid == -1) in sigev_thread_create()
352 _pthread_cond_wait(&tn->tn_cv, sigev_list_mtx); in sigev_thread_create()
355 return (tn); in sigev_thread_create()
369 struct sigev_thread *tn; in sigev_service_loop() local
375 tn = arg; in sigev_service_loop()
376 thr_self(&tn->tn_lwpid); in sigev_service_loop()
378 _pthread_cond_broadcast(&tn->tn_cv); in sigev_service_loop()
387 if (tn->tn_refcount == 0) { in sigev_service_loop()
388 LIST_REMOVE(tn, tn_link); in sigev_service_loop()
390 free(tn); in sigev_service_loop()
408 tn->tn_cur = sn; in sigev_service_loop()
410 tn->tn_cur = NULL; in sigev_service_loop()
425 } else if (tn->tn_cur) { in sigev_service_loop()
427 while (tn->tn_cur) in sigev_service_loop()
428 _pthread_cond_wait(&tn->tn_cv, sigev_list_mtx); in sigev_service_loop()