Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 14dadf1d authored by Mark Fasheh's avatar Mark Fasheh Committed by Jonathan Corbet
Browse files

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: default avatarMark Fasheh <mfasheh@suse.com>
Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent d396c5f1
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -5,6 +5,28 @@ Please use DEFINE_SPINLOCK()/DEFINE_RWLOCK() or
__SPIN_LOCK_UNLOCKED()/__RW_LOCK_UNLOCKED() as appropriate for static
initialization.

Most of the time, you can simply turn:

	static spinlock_t xxx_lock = SPIN_LOCK_UNLOCKED;

into:

	static DEFINE_SPINLOCK(xxx_lock);

Static structure member variables go from:

	struct foo bar {
		.lock	=	SPIN_LOCK_UNLOCKED;
	};

to:

	struct foo bar {
		.lock	=	__SPIN_LOCK_UNLOCKED(bar.lock);
	};

Declaration of static rw_locks undergo a similar transformation.

Dynamic initialization, when necessary, may be performed as
demonstrated below.