• Frederic Weisbecker's avatar
    hardirq: Split preempt count mask definitions · 2d4b8473
    Frederic Weisbecker authored
    In order to use static keys with vtime APIs, we'll need to
    add static keys headers to vtime.h
    
    hardirq.h then becomes a problem because it needs vtime.h
    for irqtime accounting in irq_enter/irq_exit, but it's
    often included just to get the irq mask definitions in the
    task preempt_count field and the APIs that come along:
    in_interrupt(), in_hardirq(), etc...
    
    Some very low level arch headers sometimes need these masks
    and APIs such as arch/m68k/include/asm/irqflags.h for example.
    But they don't want to include hardirq.h if vtime.h, jump_label.h
    and even workqueue.h come along. Including such bloated high
    level header from arch headers can quickly result in circular
    headers dependency that crash the build.
    
    So let's split hardirq.h in two parts:
    
    * preempt_mask.h that gathers all the preempt_count definitions
    and the APIs associated. This one is considered low level and can
    be safely included anywhere.
    
    * hardirq.h that includes the previous one. It defines the irq
    entry/exit APIs.
    
    To avoid future circular headers dependencies, the preempt_mask.h
    inclusion can replace hardirq.h on files that don't implement irq
    low level handlers but just need the atomic/context check APIs.
    Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Li Zhong <zhong@linux.vnet.ibm.com>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Kevin Hilman <khilman@linaro.org>
    2d4b8473
hardirq.h 1.74 KB