}
while (uatomic_read(&_state) == WAITER_WAITING) {
- if (!futex_noasync(
- &_state, FUTEX_WAIT, WAITER_WAITING, nullptr, nullptr, 0)) {
+ if (!futex_noasync(&_state, FUTEX_WAIT, WAITER_WAITING, nullptr, nullptr, 0)) {
/*
* Prior queued wakeups queued by unrelated code
* using the same address can cause futex wait to
{
cmm_smp_mb();
- LTTNG_ASSERT(uatomic_read(&_state) == WAITER_WAITING);
+ LTTNG_ASSERT(uatomic_read(&_state.get()) == WAITER_WAITING);
- uatomic_set(&_state, WAITER_WOKEN_UP);
- if (!(uatomic_read(&_state) & WAITER_RUNNING)) {
- if (futex_noasync(&_state, FUTEX_WAKE, 1, nullptr, nullptr, 0) < 0) {
+ uatomic_set(&_state.get(), WAITER_WOKEN_UP);
+ if (!(uatomic_read(&_state.get()) & WAITER_RUNNING)) {
+ if (futex_noasync(&_state.get(), FUTEX_WAKE, 1, nullptr, nullptr, 0) < 0) {
PERROR("futex_noasync");
abort();
}
}
/* Allow teardown of struct urcu_wait memory. */
- uatomic_or(&_state, WAITER_TEARDOWN);
+ uatomic_or(&_state.get(), WAITER_TEARDOWN);
}
lttng::synchro::wait_queue::wait_queue()
cds_wfs_init(&_stack);
}
-void lttng::synchro::wait_queue::add(waiter &waiter) noexcept
+void lttng::synchro::wait_queue::add(waiter& waiter) noexcept
{
(void) cds_wfs_push(&_stack, &waiter._wait_queue_node);
}
/* Wake all waiters in our stack head. */
cds_wfs_node *iter, *iter_n;
- cds_wfs_for_each_blocking_safe(waiters, iter, iter_n) {
+ cds_wfs_for_each_blocking_safe (waiters, iter, iter_n) {
auto& waiter = *lttng::utils::container_of(
iter, <tng::synchro::waiter::_wait_queue_node);