diff options
| author | James Morris <james.l.morris@oracle.com> | 2014-04-14 05:23:14 +0400 |
|---|---|---|
| committer | James Morris <james.l.morris@oracle.com> | 2014-04-14 05:23:14 +0400 |
| commit | ecd740c6f2f092b90b95fa35f757973589eaaca2 (patch) | |
| tree | ce02b1e18c4fc5729699251460cd8be7604d8401 /include/linux/preempt.h | |
| parent | f64410ec665479d7b4b77b7519e814253ed0f686 (diff) | |
| parent | 455c6fdbd219161bd09b1165f11699d6d73de11c (diff) | |
| download | linux-ecd740c6f2f092b90b95fa35f757973589eaaca2.tar.xz | |
Merge commit 'v3.14' into next
Diffstat (limited to 'include/linux/preempt.h')
| -rw-r--r-- | include/linux/preempt.h | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/include/linux/preempt.h b/include/linux/preempt.h index a3d9dc8c2c00..de83b4eb1642 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -64,7 +64,11 @@ do { \ } while (0) #else -#define preempt_enable() preempt_enable_no_resched() +#define preempt_enable() \ +do { \ + barrier(); \ + preempt_count_dec(); \ +} while (0) #define preempt_check_resched() do { } while (0) #endif @@ -93,7 +97,11 @@ do { \ __preempt_schedule_context(); \ } while (0) #else -#define preempt_enable_notrace() preempt_enable_no_resched_notrace() +#define preempt_enable_notrace() \ +do { \ + barrier(); \ + __preempt_count_dec(); \ +} while (0) #endif #else /* !CONFIG_PREEMPT_COUNT */ @@ -116,6 +124,26 @@ do { \ #endif /* CONFIG_PREEMPT_COUNT */ +#ifdef MODULE +/* + * Modules have no business playing preemption tricks. + */ +#undef sched_preempt_enable_no_resched +#undef preempt_enable_no_resched +#undef preempt_enable_no_resched_notrace +#undef preempt_check_resched +#endif + +#define preempt_set_need_resched() \ +do { \ + set_preempt_need_resched(); \ +} while (0) +#define preempt_fold_need_resched() \ +do { \ + if (tif_need_resched()) \ + set_preempt_need_resched(); \ +} while (0) + #ifdef CONFIG_PREEMPT_NOTIFIERS struct preempt_notifier; |
