What is the use of stop_sched_class in Kernel? In pick_next_task function, the scheduler will pick the next task from stop_sched_class first. Is there any problem I delete this sched_class for Kernel ?
#define for_each_class(class) \
for (class = sched_class_highest; class; class = class->next)
#define sched_class_highest (&stop_sched_class)
extern const struct sched_class stop_sched_class;
/*
* Simple, special scheduling class for the per-CPU stop tasks:
*/
const struct sched_class stop_sched_class = {
.next = &rt_sched_class,
.enqueue_task = enqueue_task_stop,
.dequeue_task = dequeue_task_stop,
.yield_task = yield_task_stop,
.check_preempt_curr = check_preempt_curr_stop,
.pick_next_task = pick_next_task_stop,
.put_prev_task = put_prev_task_stop,
#ifdef CONFIG_SMP
.select_task_rq = select_task_rq_stop,
#endif
.set_curr_task = set_curr_task_stop,
.task_tick = task_tick_stop,
.get_rr_interval = get_rr_interval_stop,
.prio_changed = prio_changed_stop,
.switched_to = switched_to_stop,
};
The stop_sched_class is to stop cpu, using on SMP system, for load balancing and cpu hotplug. This class have the highest scheduling priority.
If your system does not define CONFIG_SMP, you can try to remove this class, there are several files need to be changed for successful compilation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With