Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros
lock.h File Reference

Go to the source code of this file.

Macros

#define test_and_set_bit_lock(nr, addr)   test_and_set_bit(nr, addr)
 
#define clear_bit_unlock(nr, addr)
 
#define __clear_bit_unlock(nr, addr)
 

Macro Definition Documentation

#define __clear_bit_unlock (   nr,
  addr 
)
Value:
do { \
smp_mb(); \
__clear_bit(nr, addr); \
} while (0)

__clear_bit_unlock - Clear a bit in memory, for unlock : the bit to set : the address to start counting from

This operation is like clear_bit_unlock, however it is not atomic. It does provide release barrier semantics so it can be used to unlock a bit lock, however it would only be used if no other CPU can modify any bits in the memory until the lock is released (a good example is if the bit lock itself protects access to the other bits in the word).

Definition at line 38 of file lock.h.

#define clear_bit_unlock (   nr,
  addr 
)
Value:
do { \
smp_mb__before_clear_bit(); \
clear_bit(nr, addr); \
} while (0)

clear_bit_unlock - Clear a bit in memory, for unlock : the bit to set : the address to start counting from

This operation is atomic and provides release barrier semantics.

Definition at line 21 of file lock.h.

#define test_and_set_bit_lock (   nr,
  addr 
)    test_and_set_bit(nr, addr)

test_and_set_bit_lock - Set a bit and return its old value, for lock : Bit to set : Address to count from

This operation is atomic and provides acquire barrier semantics. It can be used to implement bit locks.

Definition at line 12 of file lock.h.