Commit 14dadf1d5eb5bea2dd115852cfee880505c1c169

Authored by Mark Fasheh
Committed by Jonathan Corbet
1 parent d396c5f158

Add additional examples in Documentation/spinlocks.txt

Checkpatch will throw an error if code doesn't use the correct initializers
for static spinlocks:

ERROR: Use of SPIN_LOCK_UNLOCKED is deprecated: see Documentation/spinlocks.txt

This is fine, but Documentation/spinlocks.txt isn't very clear on how to
_use_ the new initializers for static variables. To save people time in the
future, I added two small examples of how to fix old-style static
initializers to be more lockdep friendly.

Signed-off-by: Mark Fasheh <mfasheh@suse.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>

Showing 1 changed file with 22 additions and 0 deletions Side-by-side Diff

Documentation/spinlocks.txt
... ... @@ -5,6 +5,28 @@
5 5 __SPIN_LOCK_UNLOCKED()/__RW_LOCK_UNLOCKED() as appropriate for static
6 6 initialization.
7 7  
  8 +Most of the time, you can simply turn:
  9 +
  10 + static spinlock_t xxx_lock = SPIN_LOCK_UNLOCKED;
  11 +
  12 +into:
  13 +
  14 + static DEFINE_SPINLOCK(xxx_lock);
  15 +
  16 +Static structure member variables go from:
  17 +
  18 + struct foo bar {
  19 + .lock = SPIN_LOCK_UNLOCKED;
  20 + };
  21 +
  22 +to:
  23 +
  24 + struct foo bar {
  25 + .lock = __SPIN_LOCK_UNLOCKED(bar.lock);
  26 + };
  27 +
  28 +Declaration of static rw_locks undergo a similar transformation.
  29 +
8 30 Dynamic initialization, when necessary, may be performed as
9 31 demonstrated below.
10 32