turnstile
struct turnstile *ts;
struct turnstile *ts;
struct turnstile *ts;
struct turnstile *ts;
struct turnstile *ts;
struct turnstile *ts;
struct turnstile *ts;
struct turnstile *ts;
struct turnstile *ts;
struct turnstile *ts;
struct turnstile *ts;
struct turnstile *ts;
SCHED_STAT_DEFINE_VAR(turnstile,
struct turnstile *ts;
turnstile_disown(struct turnstile *ts)
turnstile_head(struct turnstile *ts, int queue)
turnstile_empty(struct turnstile *ts, int queue)
DB_SHOW_COMMAND(turnstile, db_show_turnstile)
struct turnstile *ts;
if (ts == (struct turnstile *)addr)
struct turnstile *ts;
LIST_ENTRY(turnstile) ts_hash; /* (c) Chain and free list. */
LIST_ENTRY(turnstile) ts_link; /* (q) Contested locks. */
LIST_HEAD(, turnstile) ts_free; /* (c) Free turnstiles. */
static void print_waiters(struct turnstile *ts, int indent);
struct turnstile *ts;
print_waiters(struct turnstile *ts, int indent)
struct turnstile *ts;
LIST_HEAD(, turnstile) tc_turnstiles; /* List of turnstiles. */
static SYSCTL_NODE(_debug, OID_AUTO, turnstile, CTLFLAG_RD | CTLFLAG_MPSAFE, 0,
static int turnstile_adjust_thread(struct turnstile *ts,
static struct thread *turnstile_first_waiter(struct turnstile *ts);
static void turnstile_setowner(struct turnstile *ts, struct thread *owner);
propagate_unlock_ts(struct turnstile *top, struct turnstile *ts)
propagate_unlock_td(struct turnstile *top, struct thread *td)
struct turnstile *ts, *top;
turnstile_adjust_thread(struct turnstile *ts, struct thread *td)
turnstile_zone = uma_zcreate("TURNSTILE", sizeof(struct turnstile),
struct turnstile *ts;
turnstile_setowner(struct turnstile *ts, struct thread *owner)
struct turnstile *ts;
struct turnstile *ts;
struct turnstile *ts;
struct turnstile *
turnstile_free(struct turnstile *ts)
struct turnstile *
struct turnstile *ts;
turnstile_lock(struct turnstile *ts, struct lock_object **lockp,
turnstile_unlock(struct turnstile *ts, struct lock_object *lock)
turnstile_assert(struct turnstile *ts)
turnstile_cancel(struct turnstile *ts)
struct turnstile *
struct turnstile *ts;
turnstile_first_waiter(struct turnstile *ts)
turnstile_claim(struct turnstile *ts)
turnstile_wait(struct turnstile *ts, struct thread *owner, int queue)
turnstile_signal(struct turnstile *ts, int queue)
turnstile_broadcast(struct turnstile *ts, int queue)
struct turnstile *ts1;
struct turnstile *nts;
turnstile_unpend(struct turnstile *ts)
struct turnstile;
struct turnstile *td_turnstile; /* (k) Associated turnstile. */
struct turnstile *td_blocked; /* (t) Lock thread is blocked on. */
LIST_HEAD(, turnstile) td_contested; /* (q) Contested locks. */
bool turnstile_lock(struct turnstile *, struct lock_object **,
void turnstile_unlock(struct turnstile *, struct lock_object *);
void turnstile_assert(struct turnstile *);
struct turnstile;
struct turnstile *turnstile_alloc(void);
void turnstile_broadcast(struct turnstile *, int);
void turnstile_cancel(struct turnstile *);
void turnstile_claim(struct turnstile *);
void turnstile_disown(struct turnstile *);
int turnstile_empty(struct turnstile *ts, int queue);
void turnstile_free(struct turnstile *);
struct thread *turnstile_head(struct turnstile *, int);
struct turnstile *turnstile_lookup(struct lock_object *);
int turnstile_signal(struct turnstile *, int);
struct turnstile *turnstile_trywait(struct lock_object *);
void turnstile_unpend(struct turnstile *);
void turnstile_wait(struct turnstile *, struct thread *, int);