Lines Matching refs:rll

239 typedef struct rll {  struct
1076 ztest_rll_init(rll_t *rll) in ztest_rll_init() argument
1078 rll->rll_writer = NULL; in ztest_rll_init()
1079 rll->rll_readers = 0; in ztest_rll_init()
1080 VERIFY(_mutex_init(&rll->rll_lock, USYNC_THREAD, NULL) == 0); in ztest_rll_init()
1081 VERIFY(cond_init(&rll->rll_cv, USYNC_THREAD, NULL) == 0); in ztest_rll_init()
1085 ztest_rll_destroy(rll_t *rll) in ztest_rll_destroy() argument
1087 ASSERT(rll->rll_writer == NULL); in ztest_rll_destroy()
1088 ASSERT(rll->rll_readers == 0); in ztest_rll_destroy()
1089 VERIFY(_mutex_destroy(&rll->rll_lock) == 0); in ztest_rll_destroy()
1090 VERIFY(cond_destroy(&rll->rll_cv) == 0); in ztest_rll_destroy()
1094 ztest_rll_lock(rll_t *rll, rl_type_t type) in ztest_rll_lock() argument
1096 VERIFY(mutex_lock(&rll->rll_lock) == 0); in ztest_rll_lock()
1099 while (rll->rll_writer != NULL) in ztest_rll_lock()
1100 (void) cond_wait(&rll->rll_cv, &rll->rll_lock); in ztest_rll_lock()
1101 rll->rll_readers++; in ztest_rll_lock()
1103 while (rll->rll_writer != NULL || rll->rll_readers) in ztest_rll_lock()
1104 (void) cond_wait(&rll->rll_cv, &rll->rll_lock); in ztest_rll_lock()
1105 rll->rll_writer = curthread; in ztest_rll_lock()
1108 VERIFY(mutex_unlock(&rll->rll_lock) == 0); in ztest_rll_lock()
1112 ztest_rll_unlock(rll_t *rll) in ztest_rll_unlock() argument
1114 VERIFY(mutex_lock(&rll->rll_lock) == 0); in ztest_rll_unlock()
1116 if (rll->rll_writer) { in ztest_rll_unlock()
1117 ASSERT(rll->rll_readers == 0); in ztest_rll_unlock()
1118 rll->rll_writer = NULL; in ztest_rll_unlock()
1120 ASSERT(rll->rll_readers != 0); in ztest_rll_unlock()
1121 ASSERT(rll->rll_writer == NULL); in ztest_rll_unlock()
1122 rll->rll_readers--; in ztest_rll_unlock()
1125 if (rll->rll_writer == NULL && rll->rll_readers == 0) in ztest_rll_unlock()
1126 VERIFY(cond_broadcast(&rll->rll_cv) == 0); in ztest_rll_unlock()
1128 VERIFY(mutex_unlock(&rll->rll_lock) == 0); in ztest_rll_unlock()
1134 rll_t *rll = &zd->zd_object_lock[object & (ZTEST_OBJECT_LOCKS - 1)]; in ztest_object_lock() local
1136 ztest_rll_lock(rll, type); in ztest_object_lock()
1142 rll_t *rll = &zd->zd_object_lock[object & (ZTEST_OBJECT_LOCKS - 1)]; in ztest_object_unlock() local
1144 ztest_rll_unlock(rll); in ztest_object_unlock()
1152 rll_t *rll = &zd->zd_range_lock[hash & (ZTEST_RANGE_LOCKS - 1)]; in ztest_range_lock() local
1159 rl->rl_lock = rll; in ztest_range_lock()
1161 ztest_rll_lock(rll, type); in ztest_range_lock()
1169 rll_t *rll = rl->rl_lock; in ztest_range_unlock() local
1171 ztest_rll_unlock(rll); in ztest_range_unlock()