Lines Matching refs:thread
950 xpvtap_user_thread_t *thread; in xpvtap_user_thread_init() local
954 thread = &state->bt_thread; in xpvtap_user_thread_init()
956 mutex_init(&thread->ut_mutex, NULL, MUTEX_DRIVER, NULL); in xpvtap_user_thread_init()
957 cv_init(&thread->ut_wake_cv, NULL, CV_DRIVER, NULL); in xpvtap_user_thread_init()
958 cv_init(&thread->ut_exit_done_cv, NULL, CV_DRIVER, NULL); in xpvtap_user_thread_init()
959 thread->ut_wake = B_FALSE; in xpvtap_user_thread_init()
960 thread->ut_exit = B_FALSE; in xpvtap_user_thread_init()
961 thread->ut_exit_done = B_TRUE; in xpvtap_user_thread_init()
965 thread->ut_taskq = ddi_taskq_create(state->bt_dip, taskqname, 1, in xpvtap_user_thread_init()
967 if (thread->ut_taskq == NULL) { in xpvtap_user_thread_init()
974 ddi_taskq_destroy(thread->ut_taskq); in xpvtap_user_thread_init()
976 cv_destroy(&thread->ut_exit_done_cv); in xpvtap_user_thread_init()
977 cv_destroy(&thread->ut_wake_cv); in xpvtap_user_thread_init()
978 mutex_destroy(&thread->ut_mutex); in xpvtap_user_thread_init()
990 xpvtap_user_thread_t *thread; in xpvtap_user_thread_start() local
996 thread = &state->bt_thread; in xpvtap_user_thread_start()
999 thread->ut_exit_done = B_FALSE; in xpvtap_user_thread_start()
1000 e = ddi_taskq_dispatch(thread->ut_taskq, xpvtap_user_thread, state, in xpvtap_user_thread_start()
1003 thread->ut_exit_done = B_TRUE; in xpvtap_user_thread_start()
1077 xpvtap_user_thread_t *thread; in xpvtap_user_thread() local
1087 thread = &state->bt_thread; in xpvtap_user_thread()
1091 mutex_enter(&thread->ut_mutex); in xpvtap_user_thread()
1092 if (thread->ut_exit) { in xpvtap_user_thread()
1093 thread->ut_exit_done = B_TRUE; in xpvtap_user_thread()
1095 mutex_exit(&thread->ut_mutex); in xpvtap_user_thread()
1103 if (!thread->ut_wake) { in xpvtap_user_thread()
1104 e = cv_wait_sig(&thread->ut_wake_cv, &thread->ut_mutex); in xpvtap_user_thread()
1105 if ((e == 0) || (thread->ut_exit)) { in xpvtap_user_thread()
1106 thread->ut_exit = B_TRUE; in xpvtap_user_thread()
1107 mutex_exit(&thread->ut_mutex); in xpvtap_user_thread()
1113 if (!thread->ut_wake) { in xpvtap_user_thread()
1114 mutex_exit(&thread->ut_mutex); in xpvtap_user_thread()
1119 thread->ut_wake = B_FALSE; in xpvtap_user_thread()
1120 mutex_exit(&thread->ut_mutex); in xpvtap_user_thread()
1153 } while (!thread->ut_exit); in xpvtap_user_thread()
1174 } while (!thread->ut_exit); in xpvtap_user_thread()