waiter
struct pthread__waiter waiter, *next, *head;
waiter.lid = self->pt_lid;
waiter.next = head;
next = atomic_cas_ptr(&cond->ptc_waiters, head, &waiter);
while (waiter.lid &&
while (__predict_false(waiter.lid)) {
pthread__assert(!waiter.lid);
struct pthread__waiter waiter;
waiter.next = ptm->ptm_waiters;
waiter.lid = self->pt_lid;
next = atomic_cas_ptr(&ptm->ptm_waiters, waiter.next, &waiter);
if (next != waiter.next) {
while (waiter.lid != 0) {
while (waiter.lid != 0) {
TAILQ_HEAD(waithead, waiter);
TAILQ_ENTRY(waiter) entries;
struct waiter w;
struct waiter *w;
struct waiter *w;
lwpid_t waiter, self = 0;
waiter = atomic_swap_uint(&_rtld_waiter_shared, self);
if (waiter)
_lwp_unpark(waiter, __UNVOLATILE(&_rtld_mutex));
lwpid_t waiter;
if ((waiter = _rtld_waiter_exclusive) != 0)
_lwp_unpark(waiter, __UNVOLATILE(&_rtld_mutex));
lwpid_t waiter, self = _lwp_self();
waiter = atomic_swap_uint(&_rtld_waiter_exclusive, self);
if (waiter)
_lwp_unpark(waiter, __UNVOLATILE(&_rtld_mutex));
lwpid_t waiter;
if ((waiter = _rtld_waiter_exclusive) != 0)
_lwp_unpark(waiter, __UNVOLATILE(&_rtld_mutex));
if ((waiter = _rtld_waiter_shared) != 0)
_lwp_unpark(waiter, __UNVOLATILE(&_rtld_mutex));
TAILQ_ENTRY(waiter) list;
struct waiter w;
struct waiter *w;
struct waiter *w;
struct waiter;
TAILQ_HEAD(waitq, waiter);
waiter();
void waiter(void);
lwpid_t waiter;
RL(_lwp_wait(0, &waiter));
ATF_REQUIRE_EQ_MSG(waiter, lwp_data[1].threadid,
(long)waiter, (long)lwp_data[1].threadid);
RL(_lwp_wait(0, &waiter));
ATF_REQUIRE_EQ_MSG(waiter, lwp_data[0].threadid,
(long)waiter, (long)lwp_data[0].threadid);
synchronize(const int fd, bool waiter)
if (waiter) {