diff options
author | Davidlohr Bueso <davidlohr@hp.com> | 2014-07-30 16:41:55 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2014-08-13 04:32:03 -0400 |
commit | 214e0aed639ef40987bf6159fad303171a6de31e (patch) | |
tree | 9f4c2eb1497a7377de93d619c05cf6c82fcfa0cb /Documentation | |
parent | 7608a43d8f2e02f8b532f8e11481d7ecf8b5d3f9 (diff) |
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 <davidlohr@hp.com>
Acked-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: jason.low2@hp.com
Cc: aswin@hp.com
Cc: Alexei Starovoitov <ast@plumgrid.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Chris Mason <clm@fb.com>
Cc: Dan Streetman <ddstreet@ieee.org>
Cc: David Airlie <airlied@linux.ie>
Cc: Davidlohr Bueso <davidlohr@hp.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Jason Low <jason.low2@hp.com>
Cc: Josef Bacik <jbacik@fusionio.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Lubomir Rintel <lkundrak@v3.sk>
Cc: Masanari Iida <standby24x7@gmail.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Vineet Gupta <vgupta@synopsys.com>
Cc: fengguang.wu@intel.com
Link: http://lkml.kernel.org/r/1406752916-3341-6-git-send-email-davidlohr@hp.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/00-INDEX | 2 | ||||
-rw-r--r-- | Documentation/DocBook/kernel-locking.tmpl | 2 | ||||
-rw-r--r-- | Documentation/locking/lockdep-design.txt (renamed from Documentation/lockdep-design.txt) | 0 | ||||
-rw-r--r-- | Documentation/locking/lockstat.txt (renamed from Documentation/lockstat.txt) | 2 | ||||
-rw-r--r-- | Documentation/locking/mutex-design.txt (renamed from Documentation/mutex-design.txt) | 0 | ||||
-rw-r--r-- | Documentation/locking/rt-mutex-design.txt (renamed from Documentation/rt-mutex-design.txt) | 0 | ||||
-rw-r--r-- | Documentation/locking/rt-mutex.txt (renamed from Documentation/rt-mutex.txt) | 0 | ||||
-rw-r--r-- | Documentation/locking/spinlocks.txt (renamed from Documentation/spinlocks.txt) | 14 | ||||
-rw-r--r-- | Documentation/locking/ww-mutex-design.txt (renamed from Documentation/ww-mutex-design.txt) | 0 |
9 files changed, 11 insertions, 9 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index 27e67a98b7be..1750fcef1ab4 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX | |||
@@ -287,6 +287,8 @@ local_ops.txt | |||
287 | - semantics and behavior of local atomic operations. | 287 | - semantics and behavior of local atomic operations. |
288 | lockdep-design.txt | 288 | lockdep-design.txt |
289 | - documentation on the runtime locking correctness validator. | 289 | - documentation on the runtime locking correctness validator. |
290 | locking/ | ||
291 | - directory with info about kernel locking primitives | ||
290 | lockstat.txt | 292 | lockstat.txt |
291 | - info on collecting statistics on locks (and contention). | 293 | - info on collecting statistics on locks (and contention). |
292 | lockup-watchdogs.txt | 294 | lockup-watchdogs.txt |
diff --git a/Documentation/DocBook/kernel-locking.tmpl b/Documentation/DocBook/kernel-locking.tmpl index e584ee12a1e7..7c9cc4846cb6 100644 --- a/Documentation/DocBook/kernel-locking.tmpl +++ b/Documentation/DocBook/kernel-locking.tmpl | |||
@@ -1972,7 +1972,7 @@ machines due to caching. | |||
1972 | <itemizedlist> | 1972 | <itemizedlist> |
1973 | <listitem> | 1973 | <listitem> |
1974 | <para> | 1974 | <para> |
1975 | <filename>Documentation/spinlocks.txt</filename>: | 1975 | <filename>Documentation/locking/spinlocks.txt</filename>: |
1976 | Linus Torvalds' spinlocking tutorial in the kernel sources. | 1976 | Linus Torvalds' spinlocking tutorial in the kernel sources. |
1977 | </para> | 1977 | </para> |
1978 | </listitem> | 1978 | </listitem> |
diff --git a/Documentation/lockdep-design.txt b/Documentation/locking/lockdep-design.txt index 5dbc99c04f6e..5dbc99c04f6e 100644 --- a/Documentation/lockdep-design.txt +++ b/Documentation/locking/lockdep-design.txt | |||
diff --git a/Documentation/lockstat.txt b/Documentation/locking/lockstat.txt index 72d010689751..7428773a1e69 100644 --- a/Documentation/lockstat.txt +++ b/Documentation/locking/lockstat.txt | |||
@@ -12,7 +12,7 @@ Because things like lock contention can severely impact performance. | |||
12 | - HOW | 12 | - HOW |
13 | 13 | ||
14 | Lockdep already has hooks in the lock functions and maps lock instances to | 14 | Lockdep already has hooks in the lock functions and maps lock instances to |
15 | lock classes. We build on that (see Documentation/lockdep-design.txt). | 15 | lock classes. We build on that (see Documentation/lokcing/lockdep-design.txt). |
16 | The graph below shows the relation between the lock functions and the various | 16 | The graph below shows the relation between the lock functions and the various |
17 | hooks therein. | 17 | hooks therein. |
18 | 18 | ||
diff --git a/Documentation/mutex-design.txt b/Documentation/locking/mutex-design.txt index ee231ed09ec6..ee231ed09ec6 100644 --- a/Documentation/mutex-design.txt +++ b/Documentation/locking/mutex-design.txt | |||
diff --git a/Documentation/rt-mutex-design.txt b/Documentation/locking/rt-mutex-design.txt index 8666070d3189..8666070d3189 100644 --- a/Documentation/rt-mutex-design.txt +++ b/Documentation/locking/rt-mutex-design.txt | |||
diff --git a/Documentation/rt-mutex.txt b/Documentation/locking/rt-mutex.txt index 243393d882ee..243393d882ee 100644 --- a/Documentation/rt-mutex.txt +++ b/Documentation/locking/rt-mutex.txt | |||
diff --git a/Documentation/spinlocks.txt b/Documentation/locking/spinlocks.txt index 97eaf5727178..ff35e40bdf5b 100644 --- a/Documentation/spinlocks.txt +++ b/Documentation/locking/spinlocks.txt | |||
@@ -105,9 +105,9 @@ never used in interrupt handlers, you can use the non-irq versions: | |||
105 | spin_unlock(&lock); | 105 | spin_unlock(&lock); |
106 | 106 | ||
107 | (and the equivalent read-write versions too, of course). The spinlock will | 107 | (and the equivalent read-write versions too, of course). The spinlock will |
108 | guarantee the same kind of exclusive access, and it will be much faster. | 108 | guarantee the same kind of exclusive access, and it will be much faster. |
109 | This is useful if you know that the data in question is only ever | 109 | This is useful if you know that the data in question is only ever |
110 | manipulated from a "process context", ie no interrupts involved. | 110 | manipulated from a "process context", ie no interrupts involved. |
111 | 111 | ||
112 | The reasons you mustn't use these versions if you have interrupts that | 112 | The reasons you mustn't use these versions if you have interrupts that |
113 | play with the spinlock is that you can get deadlocks: | 113 | 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 | |||
122 | interrupt happens on the same CPU that already holds the lock, because the | 122 | interrupt happens on the same CPU that already holds the lock, because the |
123 | lock will obviously never be released (because the interrupt is waiting | 123 | lock will obviously never be released (because the interrupt is waiting |
124 | for the lock, and the lock-holder is interrupted by the interrupt and will | 124 | for the lock, and the lock-holder is interrupted by the interrupt and will |
125 | not continue until the interrupt has been processed). | 125 | not continue until the interrupt has been processed). |
126 | 126 | ||
127 | (This is also the reason why the irq-versions of the spinlocks only need | 127 | (This is also the reason why the irq-versions of the spinlocks only need |
128 | to disable the _local_ interrupts - it's ok to use spinlocks in interrupts | 128 | to disable the _local_ interrupts - it's ok to use spinlocks in interrupts |
129 | on other CPU's, because an interrupt on another CPU doesn't interrupt the | 129 | on other CPU's, because an interrupt on another CPU doesn't interrupt the |
130 | CPU that holds the lock, so the lock-holder can continue and eventually | 130 | CPU that holds the lock, so the lock-holder can continue and eventually |
131 | releases the lock). | 131 | releases the lock). |
132 | 132 | ||
133 | Note that you can be clever with read-write locks and interrupts. For | 133 | Note that you can be clever with read-write locks and interrupts. For |
134 | example, if you know that the interrupt only ever gets a read-lock, then | 134 | example, if you know that the interrupt only ever gets a read-lock, then |
135 | you can use a non-irq version of read locks everywhere - because they | 135 | you can use a non-irq version of read locks everywhere - because they |
136 | don't block on each other (and thus there is no dead-lock wrt interrupts. | 136 | don't block on each other (and thus there is no dead-lock wrt interrupts. |
137 | But when you do the write-lock, you have to use the irq-safe version. | 137 | But when you do the write-lock, you have to use the irq-safe version. |
138 | 138 | ||
139 | For an example of being clever with rw-locks, see the "waitqueue_lock" | 139 | For an example of being clever with rw-locks, see the "waitqueue_lock" |
140 | handling in kernel/sched/core.c - nothing ever _changes_ a wait-queue from | 140 | handling in kernel/sched/core.c - nothing ever _changes_ a wait-queue from |
141 | within an interrupt, they only read the queue in order to know whom to | 141 | within an interrupt, they only read the queue in order to know whom to |
142 | wake up. So read-locks are safe (which is good: they are very common | 142 | wake up. So read-locks are safe (which is good: they are very common |
diff --git a/Documentation/ww-mutex-design.txt b/Documentation/locking/ww-mutex-design.txt index 8a112dc304c3..8a112dc304c3 100644 --- a/Documentation/ww-mutex-design.txt +++ b/Documentation/locking/ww-mutex-design.txt | |||