runq
static inline uintptr_t runq_sw_apply(struct runq *rq, int idx,
static inline void runq_sw_set_not_empty(struct runq *rq, int idx);
static inline void runq_sw_set_empty(struct runq *rq, int idx);
static inline bool runq_sw_is_empty(struct runq *rq, int idx);
runq_init(struct runq *rq)
runq_sw_apply(struct runq *rq, int idx, runq_sw_op *op)
runq_sw_set_not_empty(struct runq *rq, int idx)
runq_sw_set_empty(struct runq *rq, int idx)
runq_sw_is_empty(struct runq *rq, int idx)
runq_is_queue_empty(struct runq *rq, int idx)
runq_add(struct runq *rq, struct thread *td, int flags)
runq_add_idx(struct runq *rq, struct thread *td, int idx, int flags)
runq_remove(struct runq *rq, struct thread *td)
runq_findq_status_word(struct runq *const rq, const int w_idx,
runq_findq(struct runq *const rq, const int lvl_min, const int lvl_max,
runq_first_thread_range(struct runq *const rq, const int lvl_min,
runq_first_thread(struct runq *const rq)
runq_not_empty(struct runq *rq)
runq_choose(struct runq *rq)
runq_choose_fuzz(struct runq *rq, int fuzz)
struct runq *ts_runq; /* runq the thread is currently on */
((ts)->ts_runq != 0 && (ts)->ts_runq != &runq)
ts->ts_runq = &runq;
ts->ts_runq = &runq;
if (ts->ts_runq != &runq)
struct runq *rq;
rq = &runq;
td = runq_choose_fuzz(&runq, runq_fuzz);
rq = &runq;
td = runq_choose(&runq);
static struct runq runq;
static struct runq runq_pcpu[MAXCPU];
if (ts->ts_runq != &runq &&
runq_init(&runq);
return (runq_not_empty(&runq) ||
return (runq_not_empty(&runq));
runq_steal_range(struct runq *const rq, const int lvl_min, const int lvl_max,
runq_steal_realtime(struct runq *const rq, int cpu)
runq_steal_timeshare(struct runq *const rq, int cpu, int off)
runq_steal_idle(struct runq *const rq, int cpu)
runq_choose_realtime(struct runq *const rq)
runq_choose_timeshare(struct runq *const rq, int off)
runq_choose_idle(struct runq *const rq)
struct runq tdq_runq; /* (t) Run queue. */
static inline struct thread *runq_choose_realtime(struct runq *const rq);
static inline struct thread *runq_choose_timeshare(struct runq *const rq,
static inline struct thread *runq_choose_idle(struct runq *const rq);
static void runq_print(struct runq *rq);
static inline struct thread *runq_steal_range(struct runq *const rq,
static inline struct thread *runq_steal_realtime(struct runq *const rq,
static inline struct thread *runq_steal_timeshare(struct runq *const rq,
static inline struct thread *runq_steal_idle(struct runq *const rq,
runq_print(struct runq *rq)
void runq_init(struct runq *);
bool runq_is_queue_empty(struct runq *, int _idx);
void runq_add(struct runq *, struct thread *, int _flags);
void runq_add_idx(struct runq *, struct thread *, int _idx, int _flags);
bool runq_remove(struct runq *, struct thread *);
int runq_findq(struct runq *const rq, const int lvl_min,
struct thread *runq_first_thread_range(struct runq *const rq,
bool runq_not_empty(struct runq *);
struct thread *runq_choose(struct runq *);
struct thread *runq_choose_fuzz(struct runq *, int _fuzz);