• Thomas Gleixner's avatar
    sched: Clean up the might_sleep() underscore zoo · 874f670e
    Thomas Gleixner authored
    __might_sleep() vs. ___might_sleep() is hard to distinguish. Aside of that
    the three underscore variant is exposed to provide a checkpoint for
    rescheduling points which are distinct from blocking points.
    
    They are semantically a preemption point which means that scheduling is
    state preserving. A real blocking operation, e.g. mutex_lock(), wait*(),
    which cannot preserve a task state which is not equal to RUNNING.
    
    While technically blocking on a "sleeping" spinlock in RT enabled kernels
    falls into the voluntary scheduling category because it has to wait until
    the contended spin/rw lock becomes available, the RT lock substitution code
    can semantically be mapped to a voluntary preemption because the RT lock
    substitution code and the scheduler are providing mechanisms to preserve
    the task state and to take regular non-lock related wakeups into account.
    
    Rename ___might_sleep() to __might_resched() to make the distinction of
    these functions clear.
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20210923165357.928693482@linutronix.de
    874f670e
spinlock_rt.c 6.37 KB