linux/include
Paul E. McKenney 621934ee7e [PATCH] srcu-3: RCU variant permitting read-side blocking
Updated patch adding a variant of RCU that permits sleeping in read-side
critical sections.  SRCU is as follows:

o	Each use of SRCU creates its own srcu_struct, and each
	srcu_struct has its own set of grace periods.  This is
	critical, as it prevents one subsystem with a blocking
	reader from holding up SRCU grace periods for other
	subsystems.

o	The SRCU primitives (srcu_read_lock(), srcu_read_unlock(),
	and synchronize_srcu()) all take a pointer to a srcu_struct.

o	The SRCU primitives must be called from process context.

o	srcu_read_lock() returns an int that must be passed to
	the matching srcu_read_unlock().  Realtime RCU avoids the
	need for this by storing the state in the task struct,
	but SRCU needs to allow a given code path to pass through
	multiple SRCU domains -- storing state in the task struct
	would therefore require either arbitrary space in the
	task struct or arbitrary limits on SRCU nesting.  So I
	kicked the state-storage problem up to the caller.

	Of course, it is not permitted to call synchronize_srcu()
	while in an SRCU read-side critical section.

o	There is no call_srcu().  It would not be hard to implement
	one, but it seems like too easy a way to OOM the system.
	(Hey, we have enough trouble with call_rcu(), which does
	-not- permit readers to sleep!!!)  So, if you want it,
	please tell me why...

[josht@us.ibm.com: sparse notation]
Signed-off-by: Paul E. McKenney <paulmck@us.ibm.com>
Signed-off-by: Josh Triplett <josh@freedesktop.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-04 07:55:30 -07:00
..
acpi
asm-alpha [PATCH] rename the provided execve functions to kernel_execve 2006-10-02 07:57:23 -07:00
asm-arm fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-arm26 fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-avr32 [PATCH] AVR32: Implement kernel_execve 2006-10-02 07:57:24 -07:00
asm-cris [PATCH] remove remaining errno and __KERNEL_SYSCALLS__ references 2006-10-02 07:57:23 -07:00
asm-frv fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-generic fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-h8300 [PATCH] remove remaining errno and __KERNEL_SYSCALLS__ references 2006-10-02 07:57:23 -07:00
asm-i386 [PATCH] msi: refactor and move the msi irq_chip into the arch code 2006-10-04 07:55:29 -07:00
asm-ia64 [PATCH] msi: refactor and move the msi irq_chip into the arch code 2006-10-04 07:55:29 -07:00
asm-m32r fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-m68k fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-m68knommu fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-mips Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2006-10-03 16:35:11 -07:00
asm-parisc fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-powerpc fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-ppc fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-s390 fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-sh fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-sh64 fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-sparc fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-sparc64 [SPARC64]: Do not include compat.h from asm-sparc64/signal.h any more. 2006-10-02 14:30:45 -07:00
asm-um [PATCH] rename the provided execve functions to kernel_execve 2006-10-02 07:57:23 -07:00
asm-v850 [PATCH] remove remaining errno and __KERNEL_SYSCALLS__ references 2006-10-02 07:57:23 -07:00
asm-x86_64 [PATCH] msi: refactor and move the msi irq_chip into the arch code 2006-10-04 07:55:29 -07:00
asm-xtensa fix file specification in comments 2006-10-03 23:01:26 +02:00
crypto
keys
linux [PATCH] srcu-3: RCU variant permitting read-side blocking 2006-10-04 07:55:30 -07:00
math-emu
media V4L/DVB (4666): Ensure the WM8775 driver is loaded generically for any board. 2006-10-03 15:13:48 -03:00
mtd Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-10-01 17:55:53 +01:00
net [PATCH] Add genetlink utilities for payload length calculation 2006-10-01 00:39:29 -07:00
pcmcia
rdma
rxrpc
scsi [PATCH] scsi: device_reprobe() can fail 2006-09-30 19:33:43 -07:00
sound [PATCH] maximum latency tracking: ALSA support 2006-10-01 00:39:19 -07:00
video fix file specification in comments 2006-10-03 23:01:26 +02:00
Kbuild