Lines Matching refs:rll
268 typedef struct rll { struct
1262 ztest_rll_init(rll_t *rll) in ztest_rll_init() argument
1264 rll->rll_writer = NULL; in ztest_rll_init()
1265 rll->rll_readers = 0; in ztest_rll_init()
1266 mutex_init(&rll->rll_lock, NULL, USYNC_THREAD, NULL); in ztest_rll_init()
1267 cv_init(&rll->rll_cv, NULL, USYNC_THREAD, NULL); in ztest_rll_init()
1271 ztest_rll_destroy(rll_t *rll) in ztest_rll_destroy() argument
1273 ASSERT(rll->rll_writer == NULL); in ztest_rll_destroy()
1274 ASSERT(rll->rll_readers == 0); in ztest_rll_destroy()
1275 mutex_destroy(&rll->rll_lock); in ztest_rll_destroy()
1276 cv_destroy(&rll->rll_cv); in ztest_rll_destroy()
1280 ztest_rll_lock(rll_t *rll, rl_type_t type) in ztest_rll_lock() argument
1282 mutex_enter(&rll->rll_lock); in ztest_rll_lock()
1285 while (rll->rll_writer != NULL) in ztest_rll_lock()
1286 cv_wait(&rll->rll_cv, &rll->rll_lock); in ztest_rll_lock()
1287 rll->rll_readers++; in ztest_rll_lock()
1289 while (rll->rll_writer != NULL || rll->rll_readers) in ztest_rll_lock()
1290 cv_wait(&rll->rll_cv, &rll->rll_lock); in ztest_rll_lock()
1291 rll->rll_writer = curthread; in ztest_rll_lock()
1294 mutex_exit(&rll->rll_lock); in ztest_rll_lock()
1298 ztest_rll_unlock(rll_t *rll) in ztest_rll_unlock() argument
1300 mutex_enter(&rll->rll_lock); in ztest_rll_unlock()
1302 if (rll->rll_writer) { in ztest_rll_unlock()
1303 ASSERT(rll->rll_readers == 0); in ztest_rll_unlock()
1304 rll->rll_writer = NULL; in ztest_rll_unlock()
1306 ASSERT(rll->rll_readers != 0); in ztest_rll_unlock()
1307 ASSERT(rll->rll_writer == NULL); in ztest_rll_unlock()
1308 rll->rll_readers--; in ztest_rll_unlock()
1311 if (rll->rll_writer == NULL && rll->rll_readers == 0) in ztest_rll_unlock()
1312 cv_broadcast(&rll->rll_cv); in ztest_rll_unlock()
1314 mutex_exit(&rll->rll_lock); in ztest_rll_unlock()
1320 rll_t *rll = &zd->zd_object_lock[object & (ZTEST_OBJECT_LOCKS - 1)]; in ztest_object_lock() local
1322 ztest_rll_lock(rll, type); in ztest_object_lock()
1328 rll_t *rll = &zd->zd_object_lock[object & (ZTEST_OBJECT_LOCKS - 1)]; in ztest_object_unlock() local
1330 ztest_rll_unlock(rll); in ztest_object_unlock()
1338 rll_t *rll = &zd->zd_range_lock[hash & (ZTEST_RANGE_LOCKS - 1)]; in ztest_range_lock() local
1345 rl->rl_lock = rll; in ztest_range_lock()
1347 ztest_rll_lock(rll, type); in ztest_range_lock()
1355 rll_t *rll = rl->rl_lock; in ztest_range_unlock() local
1357 ztest_rll_unlock(rll); in ztest_range_unlock()