futex
PROTO_NORMAL(futex);
futex(&cmtx->lock, FUTEX_WAIT_PRIVATE,
futex(&cmtx->lock, FUTEX_WAKE_PRIVATE, 1, NULL, NULL);
futex(&cmtx->lock, FUTEX_WAIT_PRIVATE,
futex(&cmtx->lock, FUTEX_WAKE_PRIVATE, 1, NULL, NULL);
return futex(p, FUTEX_WAKE_PRIVATE, n, NULL, NULL);
error = futex(p, FUTEX_WAIT_PRIVATE, val, NULL, NULL);
error = futex(p, FUTEX_WAIT_PRIVATE, val, &rel, NULL);
return futex(p, FUTEX_REQUEUE_PRIVATE, n, (void *)(long)m, q);
return futex(p, FUTEX_WAKE, n, NULL, NULL);
error = futex(p, FUTEX_WAIT, val, NULL, NULL);
error = futex(p, FUTEX_WAIT, val, &rel, NULL);
return futex(p, FUTEX_REQUEUE, n, (void *)(long)m, q);
assert(futex(&lock, 0xFFFF, 0, 0, NULL) == -1);
return futex(p, FUTEX_WAKE | priv, n, NULL, NULL);
futex(p, FUTEX_WAIT | priv, val, NULL, NULL);
return futex(p, FUTEX_WAIT | priv, val, timeout, NULL);
return futex(p, FUTEX_REQUEUE, n, (void *)(long)m, q);
futex_addrs(struct proc *p, struct futex *f, uint32_t *uaddr, int flags)
futex_get_slpque(struct futex *f)
futex_unwait(struct futex_slpque *ofsq, struct futex *f)
struct futex f;
struct futex *f, *nf;
struct futex okey, nkey;
struct futex *f, *nf, *mf = NULL;
struct futex key;
struct futex *f, *nf;
TAILQ_ENTRY(futex) ft_entry; /* [f] entry on futex_slpque */
futex_is_eq(const struct futex *a, const struct futex *b)
TAILQ_HEAD(futex_list, futex);
int futex(volatile uint32_t *, int, int, const struct timespec *,