|  | From: Thomas Gleixner <tglx@linutronix.de> | 
|  | Date: Fri, 24 Jul 2009 12:38:56 +0200 | 
|  | Subject: preempt: Provide preempt_*_(no)rt variants | 
|  |  | 
|  | RT needs a few preempt_disable/enable points which are not necessary | 
|  | otherwise. Implement variants to avoid #ifdeffery. | 
|  |  | 
|  | Signed-off-by: Thomas Gleixner <tglx@linutronix.de> | 
|  |  | 
|  | --- | 
|  | include/linux/preempt.h |   18 +++++++++++++++++- | 
|  | 1 file changed, 17 insertions(+), 1 deletion(-) | 
|  |  | 
|  | --- a/include/linux/preempt.h | 
|  | +++ b/include/linux/preempt.h | 
|  | @@ -181,7 +181,11 @@ do { \ | 
|  | preempt_count_dec(); \ | 
|  | } while (0) | 
|  |  | 
|  | -#define preempt_enable_no_resched() sched_preempt_enable_no_resched() | 
|  | +#ifdef CONFIG_PREEMPT_RT_BASE | 
|  | +# define preempt_enable_no_resched() sched_preempt_enable_no_resched() | 
|  | +#else | 
|  | +# define preempt_enable_no_resched() preempt_enable() | 
|  | +#endif | 
|  |  | 
|  | #define preemptible()	(preempt_count() == 0 && !irqs_disabled()) | 
|  |  | 
|  | @@ -298,6 +302,18 @@ do { \ | 
|  | set_preempt_need_resched(); \ | 
|  | } while (0) | 
|  |  | 
|  | +#ifdef CONFIG_PREEMPT_RT_FULL | 
|  | +# define preempt_disable_rt()		preempt_disable() | 
|  | +# define preempt_enable_rt()		preempt_enable() | 
|  | +# define preempt_disable_nort()		barrier() | 
|  | +# define preempt_enable_nort()		barrier() | 
|  | +#else | 
|  | +# define preempt_disable_rt()		barrier() | 
|  | +# define preempt_enable_rt()		barrier() | 
|  | +# define preempt_disable_nort()		preempt_disable() | 
|  | +# define preempt_enable_nort()		preempt_enable() | 
|  | +#endif | 
|  | + | 
|  | #ifdef CONFIG_PREEMPT_NOTIFIERS | 
|  |  | 
|  | struct preempt_notifier; |