Lines Matching refs:mtx
43 void mutex_init(mutex_t *mtx) { in mutex_init() argument
44 lock_init(&mtx->core, next_striped_spin_lock_num()); in mutex_init()
45 mtx->owner = LOCK_INVALID_OWNER_ID; in mutex_init()
47 mtx->recursive = false; in mutex_init()
52 void recursive_mutex_init(recursive_mutex_t *mtx) { in recursive_mutex_init() argument
53 lock_init(&mtx->core, next_striped_spin_lock_num()); in recursive_mutex_init()
54 mtx->owner = LOCK_INVALID_OWNER_ID; in recursive_mutex_init()
55 mtx->enter_count = 0; in recursive_mutex_init()
57 mtx->recursive = true; in recursive_mutex_init()
62 void __time_critical_func(mutex_enter_blocking)(mutex_t *mtx) { in __time_critical_func()
64 if (mtx->recursive) { in __time_critical_func()
65 recursive_mutex_enter_blocking(mtx); in __time_critical_func()
71 uint32_t save = spin_lock_blocking(mtx->core.spin_lock); in __time_critical_func()
72 if (!lock_is_owner_id_valid(mtx->owner)) { in __time_critical_func()
73 mtx->owner = caller; in __time_critical_func()
74 spin_unlock(mtx->core.spin_lock, save); in __time_critical_func()
77 lock_internal_spin_unlock_with_wait(&mtx->core, save); in __time_critical_func()
81 void __time_critical_func(recursive_mutex_enter_blocking)(recursive_mutex_t *mtx) { in __time_critical_func()
84 uint32_t save = spin_lock_blocking(mtx->core.spin_lock); in __time_critical_func()
85 if (mtx->owner == caller || !lock_is_owner_id_valid(mtx->owner)) { in __time_critical_func()
86 mtx->owner = caller; in __time_critical_func()
87 uint __unused total = ++mtx->enter_count; in __time_critical_func()
88 spin_unlock(mtx->core.spin_lock, save); in __time_critical_func()
92 lock_internal_spin_unlock_with_wait(&mtx->core, save); in __time_critical_func()
97 bool __time_critical_func(mutex_try_enter)(mutex_t *mtx, uint32_t *owner_out) { in __time_critical_func()
99 if (mtx->recursive) { in __time_critical_func()
100 return recursive_mutex_try_enter(mtx, owner_out); in __time_critical_func()
104 uint32_t save = spin_lock_blocking(mtx->core.spin_lock); in __time_critical_func()
105 if (!lock_is_owner_id_valid(mtx->owner)) { in __time_critical_func()
106 mtx->owner = lock_get_caller_owner_id(); in __time_critical_func()
109 if (owner_out) *owner_out = (uint32_t) mtx->owner; in __time_critical_func()
112 spin_unlock(mtx->core.spin_lock, save); in __time_critical_func()
116 bool __time_critical_func(mutex_try_enter_block_until)(mutex_t *mtx, absolute_time_t until) { in __time_critical_func()
120 if (!mutex_try_enter(mtx, &owner)) { in __time_critical_func()
122 return mutex_enter_block_until(mtx, until); in __time_critical_func()
127 bool __time_critical_func(recursive_mutex_try_enter)(recursive_mutex_t *mtx, uint32_t *owner_out) { in __time_critical_func()
130 uint32_t save = spin_lock_blocking(mtx->core.spin_lock); in __time_critical_func()
131 if (!lock_is_owner_id_valid(mtx->owner) || mtx->owner == caller) { in __time_critical_func()
132 mtx->owner = caller; in __time_critical_func()
133 uint __unused total = ++mtx->enter_count; in __time_critical_func()
137 if (owner_out) *owner_out = (uint32_t) mtx->owner; in __time_critical_func()
140 spin_unlock(mtx->core.spin_lock, save); in __time_critical_func()
144 bool __time_critical_func(mutex_enter_timeout_ms)(mutex_t *mtx, uint32_t timeout_ms) { in __time_critical_func()
145 return mutex_enter_block_until(mtx, make_timeout_time_ms(timeout_ms)); in __time_critical_func()
148 bool __time_critical_func(recursive_mutex_enter_timeout_ms)(recursive_mutex_t *mtx, uint32_t timeou… in __time_critical_func()
149 return recursive_mutex_enter_block_until(mtx, make_timeout_time_ms(timeout_ms)); in __time_critical_func()
152 bool __time_critical_func(mutex_enter_timeout_us)(mutex_t *mtx, uint32_t timeout_us) { in __time_critical_func()
153 return mutex_enter_block_until(mtx, make_timeout_time_us(timeout_us)); in __time_critical_func()
156 bool __time_critical_func(recursive_mutex_enter_timeout_us)(recursive_mutex_t *mtx, uint32_t timeou… in __time_critical_func()
157 return recursive_mutex_enter_block_until(mtx, make_timeout_time_us(timeout_us)); in __time_critical_func()
160 bool __time_critical_func(mutex_enter_block_until)(mutex_t *mtx, absolute_time_t until) { in __time_critical_func()
162 if (mtx->recursive) { in __time_critical_func()
163 return recursive_mutex_enter_block_until(mtx, until); in __time_critical_func()
166 assert(mtx->core.spin_lock); in __time_critical_func()
169 uint32_t save = spin_lock_blocking(mtx->core.spin_lock); in __time_critical_func()
170 if (!lock_is_owner_id_valid(mtx->owner)) { in __time_critical_func()
171 mtx->owner = caller; in __time_critical_func()
172 spin_unlock(mtx->core.spin_lock, save); in __time_critical_func()
175 … if (lock_internal_spin_unlock_with_best_effort_wait_or_timeout(&mtx->core, save, until)) { in __time_critical_func()
184 bool __time_critical_func(recursive_mutex_enter_block_until)(recursive_mutex_t *mtx, absolute_time_… in __time_critical_func()
185 assert(mtx->core.spin_lock); in __time_critical_func()
188 uint32_t save = spin_lock_blocking(mtx->core.spin_lock); in __time_critical_func()
189 if (!lock_is_owner_id_valid(mtx->owner) || mtx->owner == caller) { in __time_critical_func()
190 mtx->owner = caller; in __time_critical_func()
191 uint __unused total = ++mtx->enter_count; in __time_critical_func()
192 spin_unlock(mtx->core.spin_lock, save); in __time_critical_func()
196 … if (lock_internal_spin_unlock_with_best_effort_wait_or_timeout(&mtx->core, save, until)) { in __time_critical_func()
205 void __time_critical_func(mutex_exit)(mutex_t *mtx) { in __time_critical_func()
207 if (mtx->recursive) { in __time_critical_func()
208 recursive_mutex_exit(mtx); in __time_critical_func()
212 uint32_t save = spin_lock_blocking(mtx->core.spin_lock); in __time_critical_func()
213 assert(lock_is_owner_id_valid(mtx->owner)); in __time_critical_func()
214 mtx->owner = LOCK_INVALID_OWNER_ID; in __time_critical_func()
215 lock_internal_spin_unlock_with_notify(&mtx->core, save); in __time_critical_func()
218 void __time_critical_func(recursive_mutex_exit)(recursive_mutex_t *mtx) { in __time_critical_func()
219 uint32_t save = spin_lock_blocking(mtx->core.spin_lock); in __time_critical_func()
220 assert(lock_is_owner_id_valid(mtx->owner)); in __time_critical_func()
221 assert(mtx->enter_count); in __time_critical_func()
222 if (!--mtx->enter_count) { in __time_critical_func()
223 mtx->owner = LOCK_INVALID_OWNER_ID; in __time_critical_func()
224 lock_internal_spin_unlock_with_notify(&mtx->core, save); in __time_critical_func()
226 spin_unlock(mtx->core.spin_lock, save); in __time_critical_func()