1#include "sync/tests/test_internal.h"
2
3TEST_GROUP_DEFINE(rwlock, .intensity_desc = {
4 .curve = SCALE_PIECEWISE_LOG,
5 .unit = "threads",
6 });
7
8#define RWLOCK_REPORT_PROBLEMS() \
9 test_info("rwlock tests are encountering problems and will be skipped"); \
10 return TEST_SKIP(TEST_SKIP_NONE);
11
12static struct rwlock rw_basic = RWLOCK_INIT(THREAD_PRIO_CLASS_TIMESHARE);
13
14TEST_DEFINE_SMOKE(rwlock, read_lock_unlock) {
15 rw_lock(&rw_basic, RWLOCK_READ);
16 scheduler_yield();
17 rw_unlock(&rw_basic);
18
19 return TEST_SUCCESS;
20}
21
22static struct rwlock rw_basic_w = RWLOCK_INIT(THREAD_PRIO_CLASS_TIMESHARE);
23
24TEST_DEFINE_SMOKE(rwlock, write_lock_unlock) {
25 rw_lock(&rw_basic_w, RWLOCK_WRITE);
26 scheduler_yield();
27 rw_unlock(&rw_basic_w);
28
29 return TEST_SUCCESS;
30}
31