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/spinlock_api_up.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/spinlock_api_up.h')
| -rw-r--r-- | include/linux/spinlock_api_up.h | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/include/linux/spinlock_api_up.h b/include/linux/spinlock_api_up.h index af1f47229e70..d0d188861ad6 100644 --- a/include/linux/spinlock_api_up.h +++ b/include/linux/spinlock_api_up.h @@ -24,11 +24,14 @@ * flags straight, to suppress compiler warnings of unused lock * variables, and to add the proper checker annotations: */ +#define ___LOCK(lock) \ + do { __acquire(lock); (void)(lock); } while (0) + #define __LOCK(lock) \ - do { preempt_disable(); __acquire(lock); (void)(lock); } while (0) + do { preempt_disable(); ___LOCK(lock); } while (0) #define __LOCK_BH(lock) \ - do { local_bh_disable(); __LOCK(lock); } while (0) + do { __local_bh_disable_ip(_THIS_IP_, SOFTIRQ_LOCK_OFFSET); ___LOCK(lock); } while (0) #define __LOCK_IRQ(lock) \ do { local_irq_disable(); __LOCK(lock); } while (0) @@ -36,12 +39,15 @@ #define __LOCK_IRQSAVE(lock, flags) \ do { local_irq_save(flags); __LOCK(lock); } while (0) +#define ___UNLOCK(lock) \ + do { __release(lock); (void)(lock); } while (0) + #define __UNLOCK(lock) \ - do { preempt_enable(); __release(lock); (void)(lock); } while (0) + do { preempt_enable(); ___UNLOCK(lock); } while (0) #define __UNLOCK_BH(lock) \ - do { preempt_enable_no_resched(); local_bh_enable(); \ - __release(lock); (void)(lock); } while (0) + do { __local_bh_enable_ip(_THIS_IP_, SOFTIRQ_LOCK_OFFSET); \ + ___UNLOCK(lock); } while (0) #define __UNLOCK_IRQ(lock) \ do { local_irq_enable(); __UNLOCK(lock); } while (0) |
