1#include "sched.h"
2
3
4
5
6
7
8
9
10
11
12#ifdef CONFIG_SMP
13static int
14select_task_rq_stop(struct task_struct *p, int sd_flag, int flags)
15{
16 return task_cpu(p);
17}
18#endif
19
20static void
21check_preempt_curr_stop(struct rq *rq, struct task_struct *p, int flags)
22{
23
24}
25
26static struct task_struct *pick_next_task_stop(struct rq *rq)
27{
28 struct task_struct *stop = rq->stop;
29
30 if (stop && stop->on_rq)
31 return stop;
32
33 return NULL;
34}
35
36static void
37enqueue_task_stop(struct rq *rq, struct task_struct *p, int flags)
38{
39 inc_nr_running(rq);
40}
41
42static void
43dequeue_task_stop(struct rq *rq, struct task_struct *p, int flags)
44{
45 dec_nr_running(rq);
46}
47
48static void yield_task_stop(struct rq *rq)
49{
50 BUG();
51}
52
53static void put_prev_task_stop(struct rq *rq, struct task_struct *prev)
54{
55}
56
57static void task_tick_stop(struct rq *rq, struct task_struct *curr, int queued)
58{
59}
60
61static void set_curr_task_stop(struct rq *rq)
62{
63}
64
65static void switched_to_stop(struct rq *rq, struct task_struct *p)
66{
67 BUG();
68}
69
70static void
71prio_changed_stop(struct rq *rq, struct task_struct *p, int oldprio)
72{
73 BUG();
74}
75
76static unsigned int
77get_rr_interval_stop(struct rq *rq, struct task_struct *task)
78{
79 return 0;
80}
81
82
83
84
85const struct sched_class stop_sched_class = {
86 .next = &rt_sched_class,
87
88 .enqueue_task = enqueue_task_stop,
89 .dequeue_task = dequeue_task_stop,
90 .yield_task = yield_task_stop,
91
92 .check_preempt_curr = check_preempt_curr_stop,
93
94 .pick_next_task = pick_next_task_stop,
95 .put_prev_task = put_prev_task_stop,
96
97#ifdef CONFIG_SMP
98 .select_task_rq = select_task_rq_stop,
99#endif
100
101 .set_curr_task = set_curr_task_stop,
102 .task_tick = task_tick_stop,
103
104 .get_rr_interval = get_rr_interval_stop,
105
106 .prio_changed = prio_changed_stop,
107 .switched_to = switched_to_stop,
108};
109