diff options
| author | Mark Fasheh <mfasheh@suse.com> | 2008-04-10 16:55:21 -0400 |
|---|---|---|
| committer | Jonathan Corbet <corbet@lwn.net> | 2008-04-11 15:21:14 -0400 |
| commit | 14dadf1d5eb5bea2dd115852cfee880505c1c169 (patch) | |
| tree | 03a1060a8191483dbd93964a6909f5c103d75ce4 | |
| parent | d396c5f158547e50c2b78bc984cb4a72d76e969b (diff) | |
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>
| -rw-r--r-- | Documentation/spinlocks.txt | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Documentation/spinlocks.txt b/Documentation/spinlocks.txt index 471e75389778..619699dde593 100644 --- a/Documentation/spinlocks.txt +++ b/Documentation/spinlocks.txt | |||
| @@ -5,6 +5,28 @@ Please use DEFINE_SPINLOCK()/DEFINE_RWLOCK() or | |||
| 5 | __SPIN_LOCK_UNLOCKED()/__RW_LOCK_UNLOCKED() as appropriate for static | 5 | __SPIN_LOCK_UNLOCKED()/__RW_LOCK_UNLOCKED() as appropriate for static |
| 6 | initialization. | 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 | Dynamic initialization, when necessary, may be performed as | 30 | Dynamic initialization, when necessary, may be performed as |
| 9 | demonstrated below. | 31 | demonstrated below. |
| 10 | 32 | ||
