linux-kernelorg-stable/include/linux
Steven Rostedt d769041f86 ring_buffer: implement new locking
The old "lock always" scheme had issues with lockdep, and was not very
efficient anyways.

This patch does a new design to be partially lockless on writes.
Writes will add new entries to the per cpu pages by simply disabling
interrupts. When a write needs to go to another page than it will
grab the lock.

A new "read page" has been added so that the reader can pull out a page
from the ring buffer to read without worrying about the writer writing over
it. This allows us to not take the lock for all reads. The lock is
now only taken when a read needs to go to a new page.

This is far from lockless, and interrupts still need to be disabled,
but it is a step towards a more lockless solution, and it also
solves a lot of the issues that were noticed by the first conversion
of ftrace to the ring buffers.

Note: the ring_buffer_{un}lock API has been removed.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-10-14 10:39:05 +02:00
..
amba
byteorder
can
dvb
hdlc
i2c
isdn
lockd
mfd
mlx4
mmc Fix comment in include/linux/mmc/host.h 2008-10-12 11:04:34 +02:00
mtd Support 'discard sectors' operation in translation layer support core 2008-10-09 08:56:01 +02:00
netfilter netfilter: xtables: provide invoked family value to extensions 2008-10-08 11:35:20 +02:00
netfilter_arp
netfilter_bridge netfilter: xtables: move extension arguments into compound structure (5/6) 2008-10-08 11:35:19 +02:00
netfilter_ipv4 netfilter: rename ipt_recent to xt_recent 2008-10-08 11:35:00 +02:00
netfilter_ipv6
nfsd
raid
regulator
rtc
spi
ssb
sunrpc
tc_act
tc_ematch
unaligned
usb Merge branches 'x86/xen', 'x86/build', 'x86/microcode', 'x86/mm-debug-v2', 'x86/memory-corruption-check', 'x86/early-printk', 'x86/xsave', 'x86/ptrace-v2', 'x86/quirks', 'x86/setup', 'x86/spinlocks' and 'x86/signal' into x86/core-v2 2008-10-12 15:50:02 +02:00
8250_pci.h
Kbuild Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2008-10-11 09:33:18 -07:00
a.out.h
ac97_codec.h
acct.h
acpi.h
acpi_pmtmr.h
adb.h
adfs_fs.h
adfs_fs_i.h
adfs_fs_sb.h
aer.h
affs_hardblocks.h
agp_backend.h
agpgart.h
aio.h
aio_abi.h
amifd.h
amifdreg.h
amigaffs.h
anon_inodes.h
apm-emulation.h
apm_bios.h
arcdevice.h
arcfb.h
async_tx.h
ata.h ide: lba_capacity_is_ok() -> ata_id_is_lba_capacity_ok() 2008-10-10 22:39:31 +02:00
ata_platform.h
atalk.h
atm.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_suni.h
atm_tcp.h
atm_zatm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmel-pwm-bl.h
atmel-ssc.h
atmel_pdc.h
atmel_pwm.h
atmel_serial.h
atmel_tc.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
attribute_container.h
audit.h
auto_fs.h
auto_fs4.h
auxvec.h
ax25.h
b1lli.h
b1pcmcia.h
backing-dev.h
backlight.h
baycom.h
bcd.h
bfs_fs.h
binfmts.h
bio.h block: add some comments around the bio read-write flags 2008-10-09 09:01:10 +02:00
bit_spinlock.h
bitmap.h
bitops.h
bitrev.h
blkdev.h block: gendisk integrity wrapper 2008-10-09 08:56:22 +02:00
blkpg.h
blktrace_api.h blktrace: use BLKTRACE_BDEV_SIZE as the name size for setup structure 2008-10-09 08:56:20 +02:00
blockgroup_lock.h
bootmem.h
bottom_half.h
bpqether.h
brcmphy.h
bsg.h
buffer_head.h
bug.h
byteorder.h
cache.h
can.h
capability.h
capi.h
cciss_ioctl.h
cd1400.h
cdev.h
cdk.h
cdrom.h
cfag12864b.h
cgroup.h
cgroup_subsys.h
cgroupstats.h
chio.h
circ_buf.h
clk.h
clockchips.h
clocksource.h
cm4000_cs.h
cn_proc.h
cnt32_to_63.h
coda.h
coda_cache.h
coda_fs_i.h
coda_linux.h
coda_psdev.h
coff.h
com20020.h
compat.h
compiler-gcc.h
compiler-gcc3.h
compiler-gcc4.h
compiler-intel.h
compiler.h ftrace: move notrace to compiler.h 2008-10-14 10:35:08 +02:00
completion.h
comstats.h
concap.h
configfs.h
connector.h
console.h
console_struct.h
consolemap.h
const.h
cpu.h
cpufreq.h [CPUFREQ][1/6] cpufreq: Add cpu number parameter to __cpufreq_driver_getavg() 2008-10-09 13:52:43 -04:00
cpuidle.h
cpumask.h
cpuset.h
cramfs_fs.h
cramfs_fs_sb.h
crash_dump.h
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
crc7.h
crc16.h
crc32.h
crc32c.h
cred.h
crypto.h
cryptohash.h
ctype.h
cuda.h
cyclades.h
cyclomx.h
cycx_cfm.h
cycx_drv.h
cycx_x25.h
dca.h
dcache.h
dccp.h
dcookies.h
debug_locks.h
debugfs.h
debugobjects.h
delay.h
delayacct.h
device-mapper.h dm: publish dm_vcalloc 2008-10-10 13:37:12 +01:00
device.h driver-core: use klist for class device list and implement iterator 2008-10-09 08:56:04 +02:00
device_cgroup.h
devpts_fs.h Add an instance parameter devpts interfaces 2008-10-13 09:51:43 -07:00
dio.h
dirent.h
display.h
dlm.h
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlmconstants.h
dm-dirty-log.h
dm-io.h
dm-ioctl.h
dm-kcopyd.h
dm9000.h
dma-attrs.h
dma-mapping.h
dmaengine.h
dmapool.h
dmar.h
dmi.h
dn.h
dnotify.h
dqblk_v1.h
dqblk_v2.h
dqblk_xfs.h
ds1wm.h
ds1286.h
ds17287rtc.h
dtlk.h
dw_dmac.h
edac.h
edd.h
eeprom_93cx6.h
efi.h
efs_fs_sb.h
efs_vh.h
eisa.h
elevator.h block: Add interface to abort queued requests 2008-10-09 08:56:13 +02:00
elf-em.h
elf-fdpic.h
elf.h x86: ioperm user_regset 2008-10-12 12:05:55 +02:00
elfcore-compat.h
elfcore.h
elfnote.h
enclosure.h
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h
eventfd.h
eventpoll.h
exportfs.h
ext2_fs.h
ext2_fs_sb.h
ext3_fs.h generic block based fiemap implementation 2008-10-03 17:32:43 -04:00
ext3_fs_i.h
ext3_fs_sb.h
ext3_jbd.h
f75375s.h
fadvise.h
falloc.h
fault-inject.h
fb.h
fcdevice.h
fcntl.h
fd.h floppy: support arbitrary first-sector numbers 2008-10-09 08:56:19 +02:00
fddidevice.h
fdreg.h
fdtable.h
fib_rules.h
fiemap.h vfs: vfs-level fiemap interface 2008-10-08 19:44:18 -04:00
file.h
filter.h
firewire-cdev.h
firewire-constants.h
firmware-map.h
firmware.h
flat.h
font.h
freezer.h
fs.h Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 2008-10-11 13:23:48 -07:00
fs_enet_pd.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fsl_devices.h
fsnotify.h
ftrace.h tracing/ftrace: add the boot tracer 2008-10-14 10:38:47 +02:00
fuse.h
futex.h
gameport.h
gen_stats.h
genalloc.h
generic_acl.h
generic_serial.h
genetlink.h
genhd.h block: allow disk to have extended device number 2008-10-09 08:56:08 +02:00
getcpu.h
gfp.h
gfs2_ondisk.h
gigaset_dev.h
gpio.h
gpio_keys.h
gpio_mouse.h
hardirq.h
hash.h
hayesesp.h
hdlc.h
hdlcdrv.h
hdpu_features.h
hdreg.h
hid-debug.h
hid.h
hiddev.h
hidraw.h
highmem.h
highuid.h
hil.h
hil_mlc.h
hippidevice.h
hp_sdc.h
hpet.h
hrtimer.h hrtimer: prevent migration of per CPU hrtimers 2008-09-29 17:09:14 +02:00
htirq.h
hugetlb.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hysdn_if.h
i2c-algo-bit.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-algo-sgi.h
i2c-dev.h
i2c-gpio.h
i2c-id.h
i2c-ocores.h
i2c-pca-platform.h
i2c-pnx.h
i2c-pxa.h
i2c.h
i2o-dev.h
i2o.h
i8k.h
i8042.h
ibmtr.h
icmp.h
icmpv6.h
ide.h ide: Remove ide_spin_wait_hwgroup() and use special requests instead 2008-10-10 22:39:40 +02:00
idr.h
ieee80211.h
if.h
if_addr.h
if_addrlabel.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h
if_cablemodem.h
if_ec.h
if_eql.h
if_ether.h gre: Add Transparent Ethernet Bridging 2008-10-09 12:00:17 -07:00
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h
if_ltalk.h
if_macvlan.h
if_packet.h
if_phonet.h phonet: Protect if_phonet.h against multiple inclusions. 2008-10-01 01:30:19 -07:00
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_strip.h
if_tr.h
if_tun.h
if_tunnel.h gre: Add netlink interface 2008-10-09 11:59:55 -07:00
if_vlan.h
igmp.h
ihex.h
in.h ipv4: Implement IP_TRANSPARENT socket option 2008-10-01 07:30:02 -07:00
in6.h
in_route.h
inet.h
inet_diag.h
inet_lro.h
inetdevice.h ipv4: add mc_count to in_device. 2008-10-07 15:34:37 -07:00
init.h ftrace: remove old pointers to mcount 2008-10-14 10:35:12 +02:00
init_ohci1394_dma.h
init_task.h
initrd.h
inotify.h
input-polldev.h
input.h
interrupt.h
io.h
ioc3.h
ioc4.h
iocontext.h
ioctl.h
iommu-helper.h AMD IOMMU: use iommu_device_max_index, fix 2008-10-06 16:51:30 +02:00
ioport.h Merge branch 'x86/unify-cpu-detect' into x86-v28-for-linus-phase4-D 2008-10-11 20:23:20 +02:00
ioprio.h
ip.h
ip6_tunnel.h
ip_vs.h
ipc.h
ipc_namespace.h
ipmi.h
ipmi_msgdefs.h
ipmi_smi.h
ipsec.h
ipv6.h
ipv6_route.h
ipx.h
irda.h
irq.h
irq_cpustat.h
irqflags.h
irqreturn.h
isa.h
isapnp.h
iscsi_ibft.h
isdn.h
isdn_divertif.h
isdn_ppp.h
isdnif.h
isicom.h
iso_fs.h
istallion.h
ivtv.h
ivtvfb.h
ixjuser.h
jbd.h
jbd2.h ext4: add an option to control error handling on file data 2008-10-10 22:12:43 -04:00
jffs2.h
jhash.h
jiffies.h
journal-head.h
joystick.h
kallsyms.h
kbd_diacr.h
kbd_kern.h
kbuild.h
kd.h
kdebug.h
kdev_t.h
kernel.h ftrace: rebuild everything on change to FTRACE_MCOUNT_RECORD 2008-10-14 10:34:51 +02:00
kernel_stat.h
kernelcapi.h
kexec.h
key-type.h
key-ui.h
key.h add key_revoke() dummy for KEYS=n 2008-10-12 11:44:37 -07:00
keyboard.h
keyctl.h
kfifo.h
kgdb.h
klist.h klist: don't iterate over deleted entries 2008-10-09 08:56:04 +02:00
kmalloc_sizes.h
kmod.h
kobj_map.h
kobject.h
kprobes.h ftrace: ignore functions that cannot be kprobe-ed 2008-10-14 10:34:22 +02:00
kref.h
ks0108.h
kthread.h
ktime.h
kvm.h
kvm_host.h
kvm_para.h
kvm_types.h
lapb.h
latencytop.h
lcd.h
leds-pca9532.h
leds.h
lguest.h
lguest_launcher.h
libata.h libata: reorder ata_device to remove 8 bytes of padding on 64 bits 2008-09-29 00:28:36 -04:00
libps2.h
license.h
limits.h
linkage.h ftrace: move notrace to compiler.h 2008-10-14 10:35:08 +02:00
linux_logo.h
list.h
llc.h
lm_interface.h
lmb.h
lockdep.h
log2.h
loop.h
lp.h
lzo.h
m48t86.h
mISDNdsp.h
mISDNhw.h
mISDNif.h
magic.h
major.h block: implement extended dev numbers 2008-10-09 08:56:06 +02:00
maple.h
marker.h markers: turn marker_synchronize_unregister() into an inline 2008-10-14 10:38:40 +02:00
math64.h
matroxfb.h
mbcache.h
mbus.h
mc6821.h
mc146818rtc.h
mca-legacy.h
mca.h
mdio-bitbang.h
memcontrol.h
memory.h
memory_hotplug.h
mempolicy.h
mempool.h
memstick.h
meye.h
migrate.h
mii.h
minix_fs.h
miscdevice.h
mm.h Merge branches 'x86/xen', 'x86/build', 'x86/microcode', 'x86/mm-debug-v2', 'x86/memory-corruption-check', 'x86/early-printk', 'x86/xsave', 'x86/ptrace-v2', 'x86/quirks', 'x86/setup', 'x86/spinlocks' and 'x86/signal' into x86/core-v2 2008-10-12 15:50:02 +02:00
mm_inline.h
mm_types.h
mman.h
mmdebug.h
mmiotrace.h mmiotrace: remove left-over marker cruft 2008-10-14 10:37:17 +02:00
mmtimer.h
mmu_notifier.h
mmzone.h
mnt_namespace.h
mod_devicetable.h
module.h tracing: Kernel Tracepoints 2008-10-14 10:28:28 +02:00
moduleloader.h
moduleparam.h
mount.h
mpage.h
mqueue.h
mroute.h
mroute6.h
msdos_fs.h
msg.h
msi.h
mtio.h
mutex-debug.h
mutex.h
mv643xx.h
mv643xx_eth.h
mv643xx_i2c.h
n_r3964.h
namei.h
nbd.h
ncp.h
ncp_fs.h
ncp_fs_i.h
ncp_fs_sb.h
ncp_mount.h
ncp_no.h
neighbour.h
net.h
netdevice.h dsa: add support for Trailer tagging format 2008-10-08 17:24:16 -07:00
netfilter.h netfilter: netns: remove nf_*_net() wrappers 2008-10-08 11:35:01 +02:00
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h ipsec: Put dumpers on the dump list 2008-10-01 07:03:24 -07:00
netpoll.h
netrom.h
nfs.h
nfs2.h
nfs3.h
nfs4.h
nfs4_acl.h
nfs4_mount.h
nfs_fs.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_idmap.h
nfs_iostat.h
nfs_mount.h
nfs_page.h
nfs_xdr.h
nfsacl.h
nfsd_idmap.h
nl80211.h
nls.h
nmi.h
node.h
nodemask.h
notifier.h
nsc_gpio.h
nsproxy.h
nubus.h
numa.h
nvram.h
of.h
of_device.h
of_gpio.h
of_i2c.h
of_platform.h
of_spi.h
oom.h
oprofile.h
page-flags.h
page-isolation.h
pageblock-flags.h
pagemap.h
pagevec.h
param.h
parport.h
parport_pc.h
parser.h
patchkey.h
path.h
pci-acpi.h
pci-aspm.h
pci.h
pci_hotplug.h
pci_ids.h Merge phase #3 (IOMMU) of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-10-11 11:03:12 -07:00
pci_regs.h
pcieport_if.h
pda_power.h
percpu.h
percpu_counter.h
personality.h
pfkeyv2.h xfrm: MIGRATE enhancements (draft-ebalard-mext-pfkey-enhanced-migrate) 2008-10-05 13:33:42 -07:00
pfn.h
pg.h
phantom.h
phonedev.h
phonet.h Phonet: implement GPRS virtual interface over PEP socket 2008-10-05 11:16:16 -07:00
phy.h phylib: add mdiobus_{read,write} 2008-10-08 16:38:41 -07:00
phy_fixed.h
pid.h
pid_namespace.h
pim.h
pipe_fs_i.h
pkt_cls.h
pkt_sched.h
pktcdvd.h
platform_device.h
plist.h
pm.h
pm_qos_params.h
pm_wakeup.h
pmu.h
pnp.h
poison.h
poll.h
posix-timers.h
posix_acl.h
posix_acl_xattr.h
posix_types.h
power_supply.h
ppdev.h
ppp-comp.h
ppp_channel.h
ppp_defs.h
prctl.h
preempt.h
prefetch.h
prio_heap.h
prio_tree.h
proc_fs.h
profile.h
proportions.h
ptrace.h
pwm.h
pwm_backlight.h
qnx4_fs.h
qnxtypes.h
quicklist.h
quota.h
quotaio_v1.h
quotaio_v2.h
quotaops.h
radeonfb.h
radix-tree.h
raid_class.h
ramfs.h mm: tiny-shmem nommu fix 2008-10-02 15:53:13 -07:00
random.h
ratelimit.h
raw.h
rbtree.h
rcuclassic.h rcu: RCU-based detection of stalled CPUs for Classic RCU 2008-10-03 10:36:08 +02:00
rculist.h
rcupdate.h rcu: add rcu_read_lock_sched() / rcu_read_unlock_sched() 2008-09-30 12:08:41 +02:00
rcupreempt.h
rcupreempt_trace.h
reboot.h
reciprocal_div.h
regset.h
reiserfs_acl.h
reiserfs_fs.h
reiserfs_fs_i.h
reiserfs_fs_sb.h
reiserfs_xattr.h
relay.h
res_counter.h
resource.h
resume-trace.h
rfkill.h
ring_buffer.h ring_buffer: implement new locking 2008-10-14 10:39:05 +02:00
rio.h
rio_drv.h
rio_ids.h
rio_regs.h
rmap.h
romfs_fs.h
root_dev.h
rose.h
route.h
rslib.h
rtc-v3020.h
rtc.h
rtmutex.h
rtnetlink.h
rwsem-spinlock.h
rwsem.h
rxrpc.h
sc26198.h
scatterlist.h
scc.h
sched.h Merge branch 'linus' into x86/xen 2008-10-12 12:37:32 +02:00
screen_info.h
sctp.h
scx200.h
scx200_gpio.h
sdla.h
seccomp.h
securebits.h
security.h
selection.h
selinux.h
selinux_netlink.h
sem.h
semaphore.h
seq_file.h
seq_file_net.h
seqlock.h
serial.h tty: Cris has a nice RS485 ioctl so we should steal it 2008-10-13 09:51:40 -07:00
serial167.h
serialP.h
serial_8250.h
serial_core.h serial: Make uart_port's ioport "unsigned long". 2008-10-13 09:51:39 -07:00
serial_pnx8xxx.h
serial_reg.h
serial_sci.h
serio.h
shm.h
shmem_fs.h
signal.h
signalfd.h
skbuff.h net: packet split receive api 2008-10-07 14:22:33 -07:00
slab.h
slab_def.h
slob_def.h
slub_def.h
sm501-regs.h
sm501.h
smb.h
smb_fs.h
smb_fs_i.h
smb_fs_sb.h
smb_mount.h
smbno.h
smc91x.h
smc911x.h
smp.h
smp_lock.h
snmp.h
socket.h Phonet: implement GPRS virtual interface over PEP socket 2008-10-05 11:16:16 -07:00
sockios.h
som.h
sonet.h
sony-laptop.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types.h
spinlock_types_up.h
spinlock_up.h
splice.h
srcu.h
stacktrace.h include/linux/stacktrace.h: declare struct task_struct 2008-10-03 18:22:18 -07:00
stallion.h
start_kernel.h
stat.h
statfs.h
stddef.h
stop_machine.h
string.h
string_helpers.h [SCSI] lib: add generic helper to print sizes rounded to the correct SI range 2008-10-03 11:46:14 -05:00
stringify.h
superhyway.h
suspend.h
suspend_ioctls.h
svga.h
swab.h
swap.h
swapops.h
synclink.h
sys.h
syscalls.h
sysctl.h
sysdev.h
sysfs.h
sysrq.h
sysv_fs.h
task_io_accounting.h
task_io_accounting_ops.h
taskstats.h
taskstats_kern.h
tc.h
tcp.h tcp: kill pointless urg_mode 2008-10-07 14:43:06 -07:00
telephony.h
termios.h tty: Add termiox 2008-10-13 09:51:40 -07:00
textsearch.h
textsearch_fsm.h
tfrc.h
thermal.h
thread_info.h
threads.h
tick.h [CPUFREQ][5/6] cpufreq: Changes to get_cpu_idle_time_us(), used by ondemand governor 2008-10-09 13:52:44 -04:00
tifm.h
time.h
timer.h
timerfd.h
times.h
timex.h
tiocl.h
tipc.h
tipc_config.h
topology.h
toshiba.h
tracehook.h
tracepoint.h tracing: Kernel Tracepoints 2008-10-14 10:28:28 +02:00
transport_class.h
trdevice.h
tsacct_kern.h
tty.h tty: some ICANON magic is in the wrong places 2008-10-13 09:51:44 -07:00
tty_driver.h Add an instance parameter devpts interfaces 2008-10-13 09:51:43 -07:00
tty_flip.h
tty_ldisc.h
typecheck.h
types.h
uaccess.h
ucb1400.h
udf_fs_i.h
udp.h
uinput.h
uio.h
uio_driver.h
ultrasound.h
un.h
unistd.h
unwind.h
usb.h
usb_usual.h
usbdevice_fs.h
user.h
user_namespace.h
utime.h
uts.h
utsname.h
vermagic.h
veth.h
vfs.h
via.h
video_decoder.h
video_encoder.h
video_output.h
videodev.h
videodev2.h
videotext.h
virtio.h
virtio_9p.h
virtio_balloon.h
virtio_blk.h
virtio_config.h
virtio_console.h
virtio_net.h
virtio_pci.h
virtio_ring.h
virtio_rng.h
vmalloc.h
vmstat.h
vt.h
vt_buffer.h
vt_kern.h tty: Remove more special casing and out of place code 2008-10-13 09:51:42 -07:00
w1-gpio.h
wait.h
wanrouter.h
watchdog.h
wireless.h
wm97xx.h
wm97xx_batt.h [ARM] 5248/1: wm97xx generic battery driver 2008-10-02 22:48:34 +01:00
workqueue.h
writeback.h
x25.h
xattr.h
xfrm.h xfrm: MIGRATE enhancements (draft-ebalard-mext-pfkey-enhanced-migrate) 2008-10-05 13:33:42 -07:00
xilinxfb.h
yam.h
zconf.h
zlib.h
zorro.h
zorro_ids.h
zutil.h