其结构代码如下图:
点击(此处)折叠或打开
-
const struct sched_class rt_sched_class = {
-
.next = &fair_sched_class,// 看,它下来才是cfs,
-
.enqueue_task = enqueue_task_rt,
-
.dequeue_task = dequeue_task_rt,
-
.yield_task = yield_task_rt,
-
-
.check_preempt_curr = check_preempt_curr_rt,
-
-
.pick_next_task = pick_next_task_rt,
-
.put_prev_task = put_prev_task_rt,
-
.set_next_task = set_next_task_rt,
-
-
...
-
.task_tick = task_tick_rt,
-
-
.get_rr_interval = get_rr_interval_rt,
-
-
.prio_changed = prio_changed_rt,
-
.switched_to = switched_to_rt,
-
-
.update_curr = update_curr_rt,
-
...
- };
点击(此处)折叠或打开
-
struct rt_rq {
-
struct rt_prio_array active;
-
unsigned int rt_nr_running;
-
unsigned int rr_nr_running;
- ..
-
int rt_queued;
-
-
int rt_throttled;
-
u64 rt_time;
-
u64 rt_runtime;
-
/* Nests inside the rq lock: */
-
raw_spinlock_t rt_runtime_lock;
-
...
- };
点击(此处)折叠或打开
-
struct rt_prio_array {
-
DECLARE_BITMAP(bitmap, MAX_RT_PRIO+1); /* include 1 bit for delimiter */
-
struct list_head queue[MAX_RT_PRIO];
- };