Commit 14dadf1d5eb5bea2dd115852cfee880505c1c169
Committed by
Jonathan Corbet
1 parent
d396c5f158
Exists in
master
and in
20 other branches
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 |