Lines Matching refs:mtx
76 simple_mtx_init(simple_mtx_t *mtx, ASSERTED int type)
80 mtx->val = 0;
82 HG(ANNOTATE_RWLOCK_CREATE(mtx));
86 simple_mtx_destroy(ASSERTED simple_mtx_t *mtx)
88 HG(ANNOTATE_RWLOCK_DESTROY(mtx));
90 mtx->val = _SIMPLE_MTX_INVALID_VALUE;
95 simple_mtx_lock(simple_mtx_t *mtx)
99 c = p_atomic_cmpxchg(&mtx->val, 0, 1);
105 c = p_atomic_xchg(&mtx->val, 2);
107 futex_wait(&mtx->val, 2, NULL);
108 c = p_atomic_xchg(&mtx->val, 2);
112 HG(ANNOTATE_RWLOCK_ACQUIRED(mtx, 1));
116 simple_mtx_unlock(simple_mtx_t *mtx)
120 HG(ANNOTATE_RWLOCK_RELEASED(mtx, 1));
122 c = p_atomic_fetch_add(&mtx->val, -1);
127 mtx->val = 0;
128 futex_wake(&mtx->val, 1);
133 simple_mtx_assert_locked(simple_mtx_t *mtx)
135 assert(mtx->val);
145 simple_mtx_init(simple_mtx_t *mtx, int type)
147 mtx_init(mtx, type);
151 simple_mtx_destroy(simple_mtx_t *mtx)
153 mtx_destroy(mtx);
157 simple_mtx_lock(simple_mtx_t *mtx)
159 mtx_lock(mtx);
163 simple_mtx_unlock(simple_mtx_t *mtx)
165 mtx_unlock(mtx);
169 simple_mtx_assert_locked(simple_mtx_t *mtx)
175 int ret = mtx_trylock(mtx);
178 mtx_unlock(mtx);
180 (void)mtx;