Lines Matching refs:thread
952 xpvtap_user_thread_t *thread; in xpvtap_user_thread_init() local
956 thread = &state->bt_thread; in xpvtap_user_thread_init()
958 mutex_init(&thread->ut_mutex, NULL, MUTEX_DRIVER, NULL); in xpvtap_user_thread_init()
959 cv_init(&thread->ut_wake_cv, NULL, CV_DRIVER, NULL); in xpvtap_user_thread_init()
960 cv_init(&thread->ut_exit_done_cv, NULL, CV_DRIVER, NULL); in xpvtap_user_thread_init()
961 thread->ut_wake = B_FALSE; in xpvtap_user_thread_init()
962 thread->ut_exit = B_FALSE; in xpvtap_user_thread_init()
963 thread->ut_exit_done = B_TRUE; in xpvtap_user_thread_init()
967 thread->ut_taskq = ddi_taskq_create(state->bt_dip, taskqname, 1, in xpvtap_user_thread_init()
969 if (thread->ut_taskq == NULL) { in xpvtap_user_thread_init()
976 ddi_taskq_destroy(thread->ut_taskq); in xpvtap_user_thread_init()
978 cv_destroy(&thread->ut_exit_done_cv); in xpvtap_user_thread_init()
979 cv_destroy(&thread->ut_wake_cv); in xpvtap_user_thread_init()
980 mutex_destroy(&thread->ut_mutex); in xpvtap_user_thread_init()
992 xpvtap_user_thread_t *thread; in xpvtap_user_thread_start() local
998 thread = &state->bt_thread; in xpvtap_user_thread_start()
1001 thread->ut_exit_done = B_FALSE; in xpvtap_user_thread_start()
1002 e = ddi_taskq_dispatch(thread->ut_taskq, xpvtap_user_thread, state, in xpvtap_user_thread_start()
1005 thread->ut_exit_done = B_TRUE; in xpvtap_user_thread_start()
1079 xpvtap_user_thread_t *thread; in xpvtap_user_thread() local
1089 thread = &state->bt_thread; in xpvtap_user_thread()
1093 mutex_enter(&thread->ut_mutex); in xpvtap_user_thread()
1094 if (thread->ut_exit) { in xpvtap_user_thread()
1095 thread->ut_exit_done = B_TRUE; in xpvtap_user_thread()
1097 mutex_exit(&thread->ut_mutex); in xpvtap_user_thread()
1105 if (!thread->ut_wake) { in xpvtap_user_thread()
1106 e = cv_wait_sig(&thread->ut_wake_cv, &thread->ut_mutex); in xpvtap_user_thread()
1107 if ((e == 0) || (thread->ut_exit)) { in xpvtap_user_thread()
1108 thread->ut_exit = B_TRUE; in xpvtap_user_thread()
1109 mutex_exit(&thread->ut_mutex); in xpvtap_user_thread()
1115 if (!thread->ut_wake) { in xpvtap_user_thread()
1116 mutex_exit(&thread->ut_mutex); in xpvtap_user_thread()
1121 thread->ut_wake = B_FALSE; in xpvtap_user_thread()
1122 mutex_exit(&thread->ut_mutex); in xpvtap_user_thread()
1155 } while (!thread->ut_exit); in xpvtap_user_thread()
1176 } while (!thread->ut_exit); in xpvtap_user_thread()