Lines Matching refs:rll

242 typedef struct rll {  struct
1080 ztest_rll_init(rll_t *rll) in ztest_rll_init() argument
1082 rll->rll_writer = NULL; in ztest_rll_init()
1083 rll->rll_readers = 0; in ztest_rll_init()
1084 VERIFY(_mutex_init(&rll->rll_lock, USYNC_THREAD, NULL) == 0); in ztest_rll_init()
1085 VERIFY(cond_init(&rll->rll_cv, USYNC_THREAD, NULL) == 0); in ztest_rll_init()
1089 ztest_rll_destroy(rll_t *rll) in ztest_rll_destroy() argument
1091 ASSERT(rll->rll_writer == NULL); in ztest_rll_destroy()
1092 ASSERT(rll->rll_readers == 0); in ztest_rll_destroy()
1093 VERIFY(_mutex_destroy(&rll->rll_lock) == 0); in ztest_rll_destroy()
1094 VERIFY(cond_destroy(&rll->rll_cv) == 0); in ztest_rll_destroy()
1098 ztest_rll_lock(rll_t *rll, rl_type_t type) in ztest_rll_lock() argument
1100 VERIFY(mutex_lock(&rll->rll_lock) == 0); in ztest_rll_lock()
1103 while (rll->rll_writer != NULL) in ztest_rll_lock()
1104 (void) cond_wait(&rll->rll_cv, &rll->rll_lock); in ztest_rll_lock()
1105 rll->rll_readers++; in ztest_rll_lock()
1107 while (rll->rll_writer != NULL || rll->rll_readers) in ztest_rll_lock()
1108 (void) cond_wait(&rll->rll_cv, &rll->rll_lock); in ztest_rll_lock()
1109 rll->rll_writer = curthread; in ztest_rll_lock()
1112 VERIFY(mutex_unlock(&rll->rll_lock) == 0); in ztest_rll_lock()
1116 ztest_rll_unlock(rll_t *rll) in ztest_rll_unlock() argument
1118 VERIFY(mutex_lock(&rll->rll_lock) == 0); in ztest_rll_unlock()
1120 if (rll->rll_writer) { in ztest_rll_unlock()
1121 ASSERT(rll->rll_readers == 0); in ztest_rll_unlock()
1122 rll->rll_writer = NULL; in ztest_rll_unlock()
1124 ASSERT(rll->rll_readers != 0); in ztest_rll_unlock()
1125 ASSERT(rll->rll_writer == NULL); in ztest_rll_unlock()
1126 rll->rll_readers--; in ztest_rll_unlock()
1129 if (rll->rll_writer == NULL && rll->rll_readers == 0) in ztest_rll_unlock()
1130 VERIFY(cond_broadcast(&rll->rll_cv) == 0); in ztest_rll_unlock()
1132 VERIFY(mutex_unlock(&rll->rll_lock) == 0); in ztest_rll_unlock()
1138 rll_t *rll = &zd->zd_object_lock[object & (ZTEST_OBJECT_LOCKS - 1)]; in ztest_object_lock() local
1140 ztest_rll_lock(rll, type); in ztest_object_lock()
1146 rll_t *rll = &zd->zd_object_lock[object & (ZTEST_OBJECT_LOCKS - 1)]; in ztest_object_unlock() local
1148 ztest_rll_unlock(rll); in ztest_object_unlock()
1156 rll_t *rll = &zd->zd_range_lock[hash & (ZTEST_RANGE_LOCKS - 1)]; in ztest_range_lock() local
1163 rl->rl_lock = rll; in ztest_range_lock()
1165 ztest_rll_lock(rll, type); in ztest_range_lock()
1173 rll_t *rll = rl->rl_lock; in ztest_range_unlock() local
1175 ztest_rll_unlock(rll); in ztest_range_unlock()