Min: sched_ext: scheduler architecture and interfaces
Changwoo Min has posted an
introduction to writing custom schedulers with sched_ext.
In a particular situation, when each scheduling policy needs its specific action, the core kernel scheduler calls an operation defined in struct sched_class. For example, when the core kernel scheduler needs to select a task to be scheduled, it calls the sched_class.pick_next_task(rq) callback of a concrete scheduling policy. When a task becomes runnable, the core kernel scheduler calls sched_class.enqueue(rq, p, flags) so the concrete scheduling policy enqueues task p to run queue rq. When a task's runtime state needs to be updated, the core kernel scheduler calls sched_class.update_curr(rq).