• Tejun Heo's avatar
    sched: Add sched_class->switching_to() and expose check_class_changing/changed() · d8c7bc2e
    Tejun Heo authored
    When a task switches to a new sched_class, the prev and new classes are
    notified through ->switched_from() and ->switched_to(), respectively, after
    the switching is done.
    
    A new BPF extensible sched_class will have callbacks that allow the BPF
    scheduler to keep track of relevant task states (like priority and cpumask).
    Those callbacks aren't called while a task is on a different sched_class.
    When a task comes back, we wanna tell the BPF progs the up-to-date state
    before the task gets enqueued, so we need a hook which is called before the
    switching is committed.
    
    This patch adds ->switching_to() which is called during sched_class switch
    through check_class_changing() before the task is restored. Also, this patch
    exposes check_class_changing/changed() in kernel/sched/sched.h. They will be
    used by the new BPF extensible sched_class to implement implicit sched_class
    switching which is used e.g. when falling back to CFS when the BPF scheduler
    fails or unloads.
    
    This is a prep patch and doesn't cause any behavior changes. The new
    operation and exposed functions aren't used yet.
    
    v3: Refreshed on top of tip:sched/core.
    
    v2: Improve patch description w/ details on planned use.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reviewed-by: default avatarDavid Vernet <dvernet@meta.com>
    Acked-by: default avatarJosh Don <joshdon@google.com>
    Acked-by: default avatarHao Luo <haoluo@google.com>
    Acked-by: default avatarBarret Rhoden <brho@google.com>
    d8c7bc2e
core.c 266 KB