diff options
Diffstat (limited to 'Documentation/atomic_ops.txt')
-rw-r--r-- | Documentation/atomic_ops.txt | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Documentation/atomic_ops.txt b/Documentation/atomic_ops.txt index d46306fea230..f20c10c2858f 100644 --- a/Documentation/atomic_ops.txt +++ b/Documentation/atomic_ops.txt | |||
@@ -418,6 +418,20 @@ brothers: | |||
418 | */ | 418 | */ |
419 | smp_mb__after_clear_bit(); | 419 | smp_mb__after_clear_bit(); |
420 | 420 | ||
421 | There are two special bitops with lock barrier semantics (acquire/release, | ||
422 | same as spinlocks). These operate in the same way as their non-_lock/unlock | ||
423 | postfixed variants, except that they are to provide acquire/release semantics, | ||
424 | respectively. This means they can be used for bit_spin_trylock and | ||
425 | bit_spin_unlock type operations without specifying any more barriers. | ||
426 | |||
427 | int test_and_set_bit_lock(unsigned long nr, unsigned long *addr); | ||
428 | void clear_bit_unlock(unsigned long nr, unsigned long *addr); | ||
429 | void __clear_bit_unlock(unsigned long nr, unsigned long *addr); | ||
430 | |||
431 | The __clear_bit_unlock version is non-atomic, however it still implements | ||
432 | unlock barrier semantics. This can be useful if the lock itself is protecting | ||
433 | the other bits in the word. | ||
434 | |||
421 | Finally, there are non-atomic versions of the bitmask operations | 435 | Finally, there are non-atomic versions of the bitmask operations |
422 | provided. They are used in contexts where some other higher-level SMP | 436 | provided. They are used in contexts where some other higher-level SMP |
423 | locking scheme is being used to protect the bitmask, and thus less | 437 | locking scheme is being used to protect the bitmask, and thus less |