| 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 | 20 ++++++++++++++++++-- |
| 1 file changed, 18 insertions(+), 2 deletions(-) |
| |
| Index: linux-stable/include/linux/preempt.h |
| =================================================================== |
| --- linux-stable.orig/include/linux/preempt.h |
| +++ linux-stable/include/linux/preempt.h |
| @@ -54,11 +54,15 @@ do { \ |
| dec_preempt_count(); \ |
| } while (0) |
| |
| -#define preempt_enable_no_resched() sched_preempt_enable_no_resched() |
| +#ifndef CONFIG_PREEMPT_RT_BASE |
| +# define preempt_enable_no_resched() sched_preempt_enable_no_resched() |
| +#else |
| +# define preempt_enable_no_resched() preempt_enable() |
| +#endif |
| |
| #define preempt_enable() \ |
| do { \ |
| - preempt_enable_no_resched(); \ |
| + sched_preempt_enable_no_resched(); \ |
| barrier(); \ |
| preempt_check_resched(); \ |
| } while (0) |
| @@ -104,6 +108,18 @@ do { \ |
| |
| #endif /* CONFIG_PREEMPT_COUNT */ |
| |
| +#ifdef CONFIG_PREEMPT_RT_FULL |
| +# define preempt_disable_rt() preempt_disable() |
| +# define preempt_enable_rt() preempt_enable() |
| +# define preempt_disable_nort() do { } while (0) |
| +# define preempt_enable_nort() do { } while (0) |
| +#else |
| +# define preempt_disable_rt() do { } while (0) |
| +# define preempt_enable_rt() do { } while (0) |
| +# define preempt_disable_nort() preempt_disable() |
| +# define preempt_enable_nort() preempt_enable() |
| +#endif |
| + |
| #ifdef CONFIG_PREEMPT_NOTIFIERS |
| |
| struct preempt_notifier; |