Lines Matching refs:waiter
357 hook_wait_setflag(flagwait_t *waiter, uint32_t busyset, fwflag_t wanted, in hook_wait_setflag() argument
363 mutex_enter(&waiter->fw_lock); in hook_wait_setflag()
364 if (waiter->fw_flags & FWF_DESTROY) { in hook_wait_setflag()
365 cv_signal(&waiter->fw_cv); in hook_wait_setflag()
366 mutex_exit(&waiter->fw_lock); in hook_wait_setflag()
369 while (waiter->fw_flags & busyset) { in hook_wait_setflag()
370 wantedset = ((waiter->fw_flags & wanted) == wanted); in hook_wait_setflag()
372 waiter->fw_flags |= wanted; in hook_wait_setflag()
373 CVW_EXIT_WRITE(waiter->fw_owner); in hook_wait_setflag()
374 cv_wait(&waiter->fw_cv, &waiter->fw_lock); in hook_wait_setflag()
380 mutex_exit(&waiter->fw_lock); in hook_wait_setflag()
382 CVW_ENTER_WRITE(waiter->fw_owner); in hook_wait_setflag()
383 mutex_enter(&waiter->fw_lock); in hook_wait_setflag()
385 waiter->fw_flags &= ~wanted; in hook_wait_setflag()
386 if (waiter->fw_flags & FWF_DESTROY) { in hook_wait_setflag()
387 cv_signal(&waiter->fw_cv); in hook_wait_setflag()
388 mutex_exit(&waiter->fw_lock); in hook_wait_setflag()
392 waiter->fw_flags &= ~wanted; in hook_wait_setflag()
393 ASSERT((waiter->fw_flags & wanted) == 0); in hook_wait_setflag()
394 ASSERT((waiter->fw_flags & newflag) == 0); in hook_wait_setflag()
395 waiter->fw_flags |= newflag; in hook_wait_setflag()
396 mutex_exit(&waiter->fw_lock); in hook_wait_setflag()
410 hook_wait_unsetflag(flagwait_t *waiter, fwflag_t oldflag) in hook_wait_unsetflag() argument
412 mutex_enter(&waiter->fw_lock); in hook_wait_unsetflag()
413 waiter->fw_flags &= ~oldflag; in hook_wait_unsetflag()
414 cv_signal(&waiter->fw_cv); in hook_wait_unsetflag()
415 mutex_exit(&waiter->fw_lock); in hook_wait_unsetflag()
430 hook_wait_destroy(flagwait_t *waiter) in hook_wait_destroy() argument
432 ASSERT((waiter->fw_flags & FWF_DESTROY_WANTED) == 0); in hook_wait_destroy()
433 mutex_enter(&waiter->fw_lock); in hook_wait_destroy()
434 if (waiter->fw_flags & FWF_DESTROY_WANTED) { in hook_wait_destroy()
435 cv_signal(&waiter->fw_cv); in hook_wait_destroy()
436 mutex_exit(&waiter->fw_lock); in hook_wait_destroy()
439 waiter->fw_flags |= FWF_DESTROY_WANTED; in hook_wait_destroy()
440 while (!FWF_DESTROY_OK(waiter)) { in hook_wait_destroy()
441 CVW_EXIT_WRITE(waiter->fw_owner); in hook_wait_destroy()
442 cv_wait(&waiter->fw_cv, &waiter->fw_lock); in hook_wait_destroy()
443 CVW_ENTER_WRITE(waiter->fw_owner); in hook_wait_destroy()
450 waiter->fw_flags = FWF_DESTROY_ACTIVE; in hook_wait_destroy()
451 cv_signal(&waiter->fw_cv); in hook_wait_destroy()
452 mutex_exit(&waiter->fw_lock); in hook_wait_destroy()
469 hook_wait_init(flagwait_t *waiter, cvwaitlock_t *owner) in hook_wait_init() argument
471 cv_init(&waiter->fw_cv, NULL, CV_DRIVER, NULL); in hook_wait_init()
472 mutex_init(&waiter->fw_lock, NULL, MUTEX_DRIVER, NULL); in hook_wait_init()
473 waiter->fw_flags = FWF_NONE; in hook_wait_init()
474 waiter->fw_owner = owner; in hook_wait_init()