[PATCH] Pass a lock expression to __cond_lock, like __acquire and __release
Currently, __acquire and __release take a lock expression, but __cond_lock takes only a condition, not the lock acquired if the expression evaluates to true. Change __cond_lock to accept a lock expression, and change all the callers to pass in a lock expression. Signed-off-by: Josh Triplett <josh@freedesktop.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
7d2c502f14
commit
dcc8e559ee
|
@ -14,7 +14,7 @@
|
|||
# define __releases(x) __attribute__((context(1,0)))
|
||||
# define __acquire(x) __context__(1)
|
||||
# define __release(x) __context__(-1)
|
||||
# define __cond_lock(x) ((x) ? ({ __context__(1); 1; }) : 0)
|
||||
# define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0)
|
||||
extern void __chk_user_ptr(void __user *);
|
||||
extern void __chk_io_ptr(void __iomem *);
|
||||
#else
|
||||
|
@ -31,7 +31,7 @@ extern void __chk_io_ptr(void __iomem *);
|
|||
# define __releases(x)
|
||||
# define __acquire(x) (void)0
|
||||
# define __release(x) (void)0
|
||||
# define __cond_lock(x) (x)
|
||||
# define __cond_lock(x,c) (c)
|
||||
#endif
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
|
|
@ -167,9 +167,9 @@ do { \
|
|||
* regardless of whether CONFIG_SMP or CONFIG_PREEMPT are set. The various
|
||||
* methods are defined as nops in the case they are not required.
|
||||
*/
|
||||
#define spin_trylock(lock) __cond_lock(_spin_trylock(lock))
|
||||
#define read_trylock(lock) __cond_lock(_read_trylock(lock))
|
||||
#define write_trylock(lock) __cond_lock(_write_trylock(lock))
|
||||
#define spin_trylock(lock) __cond_lock(lock, _spin_trylock(lock))
|
||||
#define read_trylock(lock) __cond_lock(lock, _read_trylock(lock))
|
||||
#define write_trylock(lock) __cond_lock(lock, _write_trylock(lock))
|
||||
|
||||
#define spin_lock(lock) _spin_lock(lock)
|
||||
|
||||
|
@ -236,7 +236,7 @@ do { \
|
|||
_write_unlock_irqrestore(lock, flags)
|
||||
#define write_unlock_bh(lock) _write_unlock_bh(lock)
|
||||
|
||||
#define spin_trylock_bh(lock) __cond_lock(_spin_trylock_bh(lock))
|
||||
#define spin_trylock_bh(lock) __cond_lock(lock, _spin_trylock_bh(lock))
|
||||
|
||||
#define spin_trylock_irq(lock) \
|
||||
({ \
|
||||
|
@ -264,7 +264,7 @@ do { \
|
|||
*/
|
||||
extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock);
|
||||
#define atomic_dec_and_lock(atomic, lock) \
|
||||
__cond_lock(_atomic_dec_and_lock(atomic, lock))
|
||||
__cond_lock(lock, _atomic_dec_and_lock(atomic, lock))
|
||||
|
||||
/**
|
||||
* spin_can_lock - would spin_trylock() succeed?
|
||||
|
|
Loading…
Reference in New Issue