| 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 |
| @@ -180,7 +180,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()) |
| |
| @@ -297,6 +301,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; |