• Peter Zijlstra's avatar
    sched: Rework pick_next_task() · fd03c5b8
    Peter Zijlstra authored
    The current rule is that:
    
      pick_next_task() := pick_task() + set_next_task(.first = true)
    
    And many classes implement it directly as such. Change things around
    to make pick_next_task() optional while also changing the definition to:
    
      pick_next_task(prev) := pick_task() + put_prev_task() + set_next_task(.first = true)
    
    The reason is that sched_ext would like to have a 'final' call that
    knows the next task. By placing put_prev_task() right next to
    set_next_task() (as it already is for sched_core) this becomes
    trivial.
    
    As a bonus, this is a nice cleanup on its own.
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20240813224016.051225657@infradead.org
    fd03c5b8
fair.c 362 KB