Paul E. McKenney
f41d911f8c
rcu: Merge preemptable-RCU functionality into hierarchical RCU
...
Create a kernel/rcutree_plugin.h file that contains definitions
for preemptable RCU (or, under the #else branch of the #ifdef,
empty definitions for the classic non-preemptable semantics).
These definitions fit into plugins defined in kernel/rcutree.c
for this purpose.
This variant of preemptable RCU uses a new algorithm whose
read-side expense is roughly that of classic hierarchical RCU
under CONFIG_PREEMPT. This new algorithm's update-side expense
is similar to that of classic hierarchical RCU, and, in absence
of read-side preemption or blocking, is exactly that of classic
hierarchical RCU. Perhaps more important, this new algorithm
has a much simpler implementation, saving well over 1,000 lines
of code compared to mainline's implementation of preemptable
RCU, which will hopefully be retired in favor of this new
algorithm.
The simplifications are obtained by maintaining per-task
nesting state for running tasks, and using a simple
lock-protected algorithm to handle accounting when tasks block
within RCU read-side critical sections, making use of lessons
learned while creating numerous user-level RCU implementations
over the past 18 months.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: laijs@cn.fujitsu.com
Cc: dipankar@in.ibm.com
Cc: akpm@linux-foundation.org
Cc: mathieu.desnoyers@polymtl.ca
Cc: josht@linux.vnet.ibm.com
Cc: dvhltc@us.ibm.com
Cc: niv@us.ibm.com
Cc: peterz@infradead.org
Cc: rostedt@goodmis.org
LKML-Reference: <12509746134003-git-send-email->
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-08-23 10:32:40 +02:00
..
lzo
lzo: use get/put_unaligned_* helpers
2008-07-25 10:53:26 -07:00
reed_solomon
zlib_deflate
zlib_inflate
bzip2/lzma: library support for gzip, bzip2 and lzma decompression
2009-01-04 15:53:34 -08:00
.gitignore
argv_split.c
atomic64.c
lib: export generic atomic64_t functions
2009-07-29 19:10:35 -07:00
audit.c
bcd.c
rtc: BCD codeshrink
2008-07-24 10:47:33 -07:00
bitmap.c
bitmap: fix end condition in bitmap_find_free_region
2009-03-12 19:32:51 -07:00
bitrev.c
lib: export bitrev16
2008-06-06 11:29:10 -07:00
bug.c
allow bug table entries to use relative pointers (and use it on x86-64)
2008-12-16 18:40:32 +01:00
bust_spinlocks.c
oops handling: ensure that any oops is flushed to the mtdoops console
2009-01-06 15:59:11 -08:00
check_signature.c
checksum.c
lib/checksum.c: fix endianess bug
2009-06-19 14:58:13 +02:00
cmdline.c
generic, memparse(): constify argument
2008-07-28 15:05:23 +02:00
cpumask.c
x86: remove some alloc_bootmem_cpumask_var calling
2009-06-11 19:27:07 +03:00
crc-ccitt.c
crc-itu-t.c
crc-t10dif.c
[SCSI] lib: Add support for the T10 (SCSI) Data Integrity Field CRC
2008-07-12 08:22:32 -05:00
crc7.c
crc16.c
crc32.c
crc32defs.h
ctype.c
debug_locks.c
lockdep: warn about lockdep disabling after kernel taint
2009-04-12 16:10:51 +02:00
debugobjects.c
debugobjects: delay free of internal objects
2009-03-17 12:28:30 +01:00
dec_and_lock.c
atomic: only take lock when the counter drops to zero on UP as well
2009-06-16 19:47:47 -07:00
decompress.c
bzip2/lzma: don't stop search at first unconfigured compression
2009-02-19 13:36:55 -08:00
decompress_bunzip2.c
lib/decompress_*: only include <linux/slab.h> if STATIC is not defined
2009-08-07 10:39:56 -07:00
decompress_inflate.c
lib/decompress_*: only include <linux/slab.h> if STATIC is not defined
2009-08-07 10:39:56 -07:00
decompress_unlzma.c
lib/decompress_*: only include <linux/slab.h> if STATIC is not defined
2009-08-07 10:39:56 -07:00
devres.c
div64.c
add an inlined version of iter_div_u64_rem
2008-06-12 10:47:58 +02:00
dma-debug.c
dma-debug: Fix the overlap() function to be correct and readable
2009-07-10 22:18:45 +02:00
dump_stack.c
dynamic_debug.c
Dynamic debug: fix typo: -/->
2009-07-28 13:45:22 -07:00
extable.c
module: trim exception table on init free.
2009-06-12 21:47:04 +09:30
fault-inject.c
Remove remaining unwinder code
2009-01-06 15:59:11 -08:00
find_last_bit.c
bitmap: find_last_bit()
2009-01-01 10:12:19 +10:30
find_next_bit.c
flex_array.c
flex_array: remove unneeded index calculation
2009-08-04 15:33:46 -07:00
gcd.c
lib: add lib/gcd.c
2009-06-18 13:04:05 -07:00
gen_crc32table.c
genalloc.c
lib/genalloc.c: remove unmatched write_lock() in gen_pool_destroy
2009-06-16 19:47:53 -07:00
halfmd4.c
hexdump.c
hexdump: remove the trailing space
2009-06-16 19:47:51 -07:00
hweight.c
idr.c
cgroup: CSS ID support
2009-04-02 19:04:53 -07:00
inflate.c
inflate: refactor inflate malloc code
2008-07-25 10:53:28 -07:00
int_sqrt.c
iomap.c
Use WARN() in lib/
2008-07-26 12:00:07 -07:00
iomap_copy.c
iommu-helper.c
introduce generic iommu_num_pages function
2008-10-16 11:21:33 -07:00
ioremap.c
irq_regs.c
is_single_threaded.c
CRED: Rename is_single_threaded() to is_wq_single_threaded()
2008-11-14 10:39:21 +11:00
kasprintf.c
Kconfig
lib: Provide generic atomic64_t implementation
2009-06-15 13:27:38 +10:00
Kconfig.debug
rcu: Merge preemptable-RCU functionality into hierarchical RCU
2009-08-23 10:32:40 +02:00
Kconfig.kgdb
kgdb: remove the requirement for CONFIG_FRAME_POINTER
2008-08-01 08:39:34 -05:00
Kconfig.kmemcheck
kmemcheck: make kconfig accessible for other architectures
2009-06-15 15:49:17 +02:00
kernel_lock.c
sched: TIF_NEED_RESCHED -> need_reshed() cleanup
2009-03-06 12:48:55 +01:00
klist.c
driver core: Remove completion from struct klist_node
2009-01-06 10:44:30 -08:00
kobject.c
kobject: make kset_create check kobject_set_name return value
2009-06-15 21:30:24 -07:00
kobject_uevent.c
driver core: allow non-root users to listen to uevents
2009-04-16 16:17:09 -07:00
kref.c
libcrc32c.c
libcrc32c: Fix "crc32c undefined" compilation error
2008-12-25 11:01:42 +11:00
list_debug.c
list debugging: use WARN() instead of BUG()
2008-07-25 10:53:29 -07:00
lmb.c
lmb: Rework lmb_dump_all() output
2009-02-11 13:38:00 +11:00
locking-selftest-hardirq.h
locking-selftest-mutex.h
locking-selftest-rlock-hardirq.h
locking-selftest-rlock-softirq.h
locking-selftest-rlock.h
locking-selftest-rsem.h
locking-selftest-softirq.h
locking-selftest-spin-hardirq.h
locking-selftest-spin-softirq.h
locking-selftest-spin.h
locking-selftest-wlock-hardirq.h
locking-selftest-wlock-softirq.h
locking-selftest-wlock.h
locking-selftest-wsem.h
locking-selftest.c
locking: rename trace_softirq_[enter|exit] => lockdep_softirq_[enter|exit]
2009-03-13 01:32:36 +01:00
Makefile
lib: flexible array implementation
2009-07-29 19:10:36 -07:00
nlattr.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6
2009-03-26 22:45:23 -07:00
parser.c
vfs: Use const for kernel parser table
2008-10-13 10:10:37 -07:00
percpu_counter.c
Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-01-06 17:10:04 -08:00
plist.c
Use WARN() in lib/
2008-07-26 12:00:07 -07:00
prio_heap.c
lib: fix sparse shadowed variable warning
2009-01-06 15:59:11 -08:00
prio_tree.c
proportions.c
Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-01-06 17:10:04 -08:00
radix-tree.c
lib: do code optimization for radix_tree_lookup() and radix_tree_lookup_slot()
2009-06-16 19:47:49 -07:00
random32.c
random32: seeding improvement
2008-07-30 16:29:19 -07:00
ratelimit.c
__ratelimit() cpu flags can't be static
2008-07-28 16:30:20 -07:00
rational.c
lib: isolate rational fractions helper function
2009-06-11 08:51:08 -07:00
rbtree.c
rb_tree: remove redundant if()-condition in rb_erase()
2009-06-16 19:47:56 -07:00
reciprocal_div.c
rwsem-spinlock.c
rwsem.c
scatterlist.c
lib/scatterlist: add a flags to signalize mapping direction
2009-07-31 12:28:45 +02:00
sha1.c
show_mem.c
lib: generic show_mem()
2008-07-26 12:00:10 -07:00
smp_processor_id.c
cpumask: convert lib/smp_processor_id to new cpumask ops
2009-01-30 15:47:34 +01:00
sort.c
generic swap(): lib/sort.c: rename swap to swap_func
2009-01-08 08:31:14 -08:00
spinlock_debug.c
string.c
string_helpers.c
[SCSI] lib: string_get_size(): don't hang on zero; no decimals on exact
2008-10-23 11:42:20 -05:00
swiotlb.c
swiotlb: change swiotlb_bus_to[phys,virt] prototypes
2009-04-08 16:18:38 +02:00
syscall.c
task_current_syscall
2008-07-26 12:00:10 -07:00
textsearch.c
remove CONFIG_KMOD from lib
2008-07-22 19:24:31 +10:00
ts_bm.c
textsearch: ts_bm: support case insensitive searching in Boyer-Moore algorithm
2008-07-08 02:37:54 -07:00
ts_fsm.c
textsearch: ts_fsm: return error on request for case insensitive search
2008-07-08 02:38:27 -07:00
ts_kmp.c
textsearch: ts_kmp: support case insensitive searching in Knuth-Morris-Pratt algorithm
2008-07-08 02:38:09 -07:00
vsprintf.c
vsprintf: introduce %pf format specifier
2009-04-29 20:55:55 +02:00