• T
    sched/rt: Provide migrate_disable/enable() inlines · 66630058
    Thomas Gleixner 提交于
    Code which solely needs to prevent migration of a task uses
    preempt_disable()/enable() pairs. This is the only reliable way to do so
    as setting the task affinity to a single CPU can be undone by a
    setaffinity operation from a different task/process.
    
    RT provides a seperate migrate_disable/enable() mechanism which does not
    disable preemption to achieve the semantic requirements of a (almost) fully
    preemptible kernel.
    
    As it is unclear from looking at a given code path whether the intention is
    to disable preemption or migration, introduce migrate_disable/enable()
    inline functions which can be used to annotate code which merely needs to
    disable migration. Map them to preempt_disable/enable() for now. The RT
    substitution will be provided later.
    
    Code which is annotated that way documents that it has no requirement to
    protect against reentrancy of a preempting task. Either this is not
    required at all or the call sites are already serialized by other means.
    Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: NIngo Molnar <mingo@kernel.org>
    Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Juri Lelli <juri.lelli@redhat.com>
    Cc: Vincent Guittot <vincent.guittot@linaro.org>
    Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Ben Segall <bsegall@google.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Link: https://lore.kernel.org/r/878slclv1u.fsf@nanos.tec.linutronix.de
    66630058
preempt.h 10.0 KB