mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-11-01 14:53:11 +01:00
locking/Documentation: Move locking related docs into Documentation/locking/
Specifically: Documentation/locking/lockdep-design.txt Documentation/locking/lockstat.txt Documentation/locking/mutex-design.txt Documentation/locking/rt-mutex-design.txt Documentation/locking/rt-mutex.txt Documentation/locking/spinlocks.txt Documentation/locking/ww-mutex-design.txt Signed-off-by: Davidlohr Bueso <[email protected]> Acked-by: Randy Dunlap <[email protected]> Signed-off-by: Peter Zijlstra <[email protected]> Cc: [email protected] Cc: [email protected] Cc: Alexei Starovoitov <[email protected]> Cc: Al Viro <[email protected]> Cc: Andrew Morton <[email protected]> Cc: Chris Mason <[email protected]> Cc: Dan Streetman <[email protected]> Cc: David Airlie <[email protected]> Cc: Davidlohr Bueso <[email protected]> Cc: David S. Miller <[email protected]> Cc: Greg Kroah-Hartman <[email protected]> Cc: Heiko Carstens <[email protected]> Cc: Jason Low <[email protected]> Cc: Josef Bacik <[email protected]> Cc: Kees Cook <[email protected]> Cc: Linus Torvalds <[email protected]> Cc: Lubomir Rintel <[email protected]> Cc: Masanari Iida <[email protected]> Cc: Paul E. McKenney <[email protected]> Cc: Randy Dunlap <[email protected]> Cc: Tim Chen <[email protected]> Cc: Vineet Gupta <[email protected]> Cc: [email protected] Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Ingo Molnar <[email protected]>
This commit is contained in:
1 parent
7608a43d8f
commit
214e0aed63
17 files changed
+21
-19
No files matched your search
@@ -287,6 +287,8 @@ local_ops.txt
|
||||
- semantics and behavior of local atomic operations.
|
||||
lockdep-design.txt
|
||||
- documentation on the runtime locking correctness validator.
|
||||
locking/
|
||||
- directory with info about kernel locking primitives
|
||||
lockstat.txt
|
||||
- info on collecting statistics on locks (and contention).
|
||||
lockup-watchdogs.txt
|
||||
|
||||
@@ -1972,7 +1972,7 @@ machines due to caching.
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>Documentation/spinlocks.txt</filename>:
|
||||
<filename>Documentation/locking/spinlocks.txt</filename>:
|
||||
Linus Torvalds' spinlocking tutorial in the kernel sources.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
File renamed without changes.
@@ -12,7 +12,7 @@ Because things like lock contention can severely impact performance.
|
||||
- HOW
|
||||
|
||||
Lockdep already has hooks in the lock functions and maps lock instances to
|
||||
lock classes. We build on that (see Documentation/lockdep-design.txt).
|
||||
lock classes. We build on that (see Documentation/lokcing/lockdep-design.txt).
|
||||
The graph below shows the relation between the lock functions and the various
|
||||
hooks therein.
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -105,9 +105,9 @@ never used in interrupt handlers, you can use the non-irq versions:
|
||||
spin_unlock(&lock);
|
||||
|
||||
(and the equivalent read-write versions too, of course). The spinlock will
|
||||
guarantee the same kind of exclusive access, and it will be much faster.
|
||||
guarantee the same kind of exclusive access, and it will be much faster.
|
||||
This is useful if you know that the data in question is only ever
|
||||
manipulated from a "process context", ie no interrupts involved.
|
||||
manipulated from a "process context", ie no interrupts involved.
|
||||
|
||||
The reasons you mustn't use these versions if you have interrupts that
|
||||
play with the spinlock is that you can get deadlocks:
|
||||
@@ -122,21 +122,21 @@ the other interrupt happens on another CPU, but it is _not_ ok if the
|
||||
interrupt happens on the same CPU that already holds the lock, because the
|
||||
lock will obviously never be released (because the interrupt is waiting
|
||||
for the lock, and the lock-holder is interrupted by the interrupt and will
|
||||
not continue until the interrupt has been processed).
|
||||
not continue until the interrupt has been processed).
|
||||
|
||||
(This is also the reason why the irq-versions of the spinlocks only need
|
||||
to disable the _local_ interrupts - it's ok to use spinlocks in interrupts
|
||||
on other CPU's, because an interrupt on another CPU doesn't interrupt the
|
||||
CPU that holds the lock, so the lock-holder can continue and eventually
|
||||
releases the lock).
|
||||
releases the lock).
|
||||
|
||||
Note that you can be clever with read-write locks and interrupts. For
|
||||
example, if you know that the interrupt only ever gets a read-lock, then
|
||||
you can use a non-irq version of read locks everywhere - because they
|
||||
don't block on each other (and thus there is no dead-lock wrt interrupts.
|
||||
But when you do the write-lock, you have to use the irq-safe version.
|
||||
don't block on each other (and thus there is no dead-lock wrt interrupts.
|
||||
But when you do the write-lock, you have to use the irq-safe version.
|
||||
|
||||
For an example of being clever with rw-locks, see the "waitqueue_lock"
|
||||
For an example of being clever with rw-locks, see the "waitqueue_lock"
|
||||
handling in kernel/sched/core.c - nothing ever _changes_ a wait-queue from
|
||||
within an interrupt, they only read the queue in order to know whom to
|
||||
wake up. So read-locks are safe (which is good: they are very common
|
||||
File renamed without changes.
+2
-2
@@ -5523,8 +5523,8 @@ M: Ingo Molnar <[email protected]>
|
||||
L: [email protected]
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/locking
|
||||
S: Maintained
|
||||
F: Documentation/lockdep*.txt
|
||||
F: Documentation/lockstat.txt
|
||||
F: Documentation/locking/lockdep*.txt
|
||||
F: Documentation/locking/lockstat.txt
|
||||
F: include/linux/lockdep.h
|
||||
F: kernel/locking/
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
* of extra utility/tracking out of our acquire-ctx. This is provided
|
||||
* by drm_modeset_lock / drm_modeset_acquire_ctx.
|
||||
*
|
||||
* For basic principles of ww_mutex, see: Documentation/ww-mutex-design.txt
|
||||
* For basic principles of ww_mutex, see: Documentation/locking/ww-mutex-design.txt
|
||||
*
|
||||
* The basic usage pattern is to:
|
||||
*
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* Copyright (C) 2006,2007 Red Hat, Inc., Ingo Molnar <[email protected]>
|
||||
* Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra <[email protected]>
|
||||
*
|
||||
* see Documentation/lockdep-design.txt for more details.
|
||||
* see Documentation/locking/lockdep-design.txt for more details.
|
||||
*/
|
||||
#ifndef __LINUX_LOCKDEP_H
|
||||
#define __LINUX_LOCKDEP_H
|
||||
|
||||
@@ -133,7 +133,7 @@ static inline int mutex_is_locked(struct mutex *lock)
|
||||
|
||||
/*
|
||||
* See kernel/locking/mutex.c for detailed documentation of these APIs.
|
||||
* Also see Documentation/mutex-design.txt.
|
||||
* Also see Documentation/locking/mutex-design.txt.
|
||||
*/
|
||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||
extern void mutex_lock_nested(struct mutex *lock, unsigned int subclass);
|
||||
|
||||
@@ -149,7 +149,7 @@ extern void downgrade_write(struct rw_semaphore *sem);
|
||||
* static then another method for expressing nested locking is
|
||||
* the explicit definition of lock class keys and the use of
|
||||
* lockdep_set_class() at lock initialization time.
|
||||
* See Documentation/lockdep-design.txt for more details.)
|
||||
* See Documentation/locking/lockdep-design.txt for more details.)
|
||||
*/
|
||||
extern void down_read_nested(struct rw_semaphore *sem, int subclass);
|
||||
extern void down_write_nested(struct rw_semaphore *sem, int subclass);
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* by Steven Rostedt, based on work by Gregory Haskins, Peter Morreale
|
||||
* and Sven Dietrich.
|
||||
*
|
||||
* Also see Documentation/mutex-design.txt.
|
||||
* Also see Documentation/locking/mutex-design.txt.
|
||||
*/
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/ww_mutex.h>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* Copyright (C) 2005 Kihon Technologies Inc., Steven Rostedt
|
||||
* Copyright (C) 2006 Esben Nielsen
|
||||
*
|
||||
* See Documentation/rt-mutex-design.txt for details.
|
||||
* See Documentation/locking/rt-mutex-design.txt for details.
|
||||
*/
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/export.h>
|
||||
|
||||
+2
-2
@@ -924,7 +924,7 @@ config PROVE_LOCKING
|
||||
the proof of observed correctness is also maintained for an
|
||||
arbitrary combination of these separate locking variants.
|
||||
|
||||
For more details, see Documentation/lockdep-design.txt.
|
||||
For more details, see Documentation/locking/lockdep-design.txt.
|
||||
|
||||
config LOCKDEP
|
||||
bool
|
||||
@@ -945,7 +945,7 @@ config LOCK_STAT
|
||||
help
|
||||
This feature enables tracking lock contention points
|
||||
|
||||
For more details, see Documentation/lockstat.txt
|
||||
For more details, see Documentation/locking/lockstat.txt
|
||||
|
||||
This also enables lock events required by "perf lock",
|
||||
subcommand of perf.
|
||||
|
||||
Reference in new issue
Block a user