diff options
| author | James Morris <james.l.morris@oracle.com> | 2014-04-14 11:23:14 +1000 |
|---|---|---|
| committer | James Morris <james.l.morris@oracle.com> | 2014-04-14 11:23:14 +1000 |
| commit | ecd740c6f2f092b90b95fa35f757973589eaaca2 (patch) | |
| tree | ce02b1e18c4fc5729699251460cd8be7604d8401 /include/linux/bottom_half.h | |
| parent | f64410ec665479d7b4b77b7519e814253ed0f686 (diff) | |
| parent | 455c6fdbd219161bd09b1165f11699d6d73de11c (diff) | |
| download | cachepc-linux-ecd740c6f2f092b90b95fa35f757973589eaaca2.tar.gz cachepc-linux-ecd740c6f2f092b90b95fa35f757973589eaaca2.zip | |
Merge commit 'v3.14' into next
Diffstat (limited to 'include/linux/bottom_half.h')
| -rw-r--r-- | include/linux/bottom_half.h | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/include/linux/bottom_half.h b/include/linux/bottom_half.h index 27b1bcffe408..86c12c93e3cf 100644 --- a/include/linux/bottom_half.h +++ b/include/linux/bottom_half.h @@ -1,9 +1,35 @@ #ifndef _LINUX_BH_H #define _LINUX_BH_H -extern void local_bh_disable(void); +#include <linux/preempt.h> +#include <linux/preempt_mask.h> + +#ifdef CONFIG_TRACE_IRQFLAGS +extern void __local_bh_disable_ip(unsigned long ip, unsigned int cnt); +#else +static __always_inline void __local_bh_disable_ip(unsigned long ip, unsigned int cnt) +{ + preempt_count_add(cnt); + barrier(); +} +#endif + +static inline void local_bh_disable(void) +{ + __local_bh_disable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET); +} + extern void _local_bh_enable(void); -extern void local_bh_enable(void); -extern void local_bh_enable_ip(unsigned long ip); +extern void __local_bh_enable_ip(unsigned long ip, unsigned int cnt); + +static inline void local_bh_enable_ip(unsigned long ip) +{ + __local_bh_enable_ip(ip, SOFTIRQ_DISABLE_OFFSET); +} + +static inline void local_bh_enable(void) +{ + __local_bh_enable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET); +} #endif /* _LINUX_BH_H */ |
