Steven Rostedt
a358324466
ring-buffer: buffer record on/off switch
...
Impact: enable/disable ring buffer recording API added
Several kernel developers have requested that there be a way to stop
recording into the ring buffers with a simple switch that can also
be enabled from userspace. This patch addes a new kernel API to the
ring buffers called:
tracing_on()
tracing_off()
When tracing_off() is called, all ring buffers will not be able to record
into their buffers.
tracing_on() will enable the ring buffers again.
These two act like an on/off switch. That is, there is no counting of the
number of times tracing_off or tracing_on has been called.
A new file is added to the debugfs/tracing directory called
tracing_on
This allows for userspace applications to also flip the switch.
echo 0 > debugfs/tracing/tracing_on
disables the tracing.
echo 1 > /debugfs/tracing/tracing_on
enables it.
Note, this does not disable or enable any tracers. It only sets or clears
a flag that needs to be set in order for the ring buffers to write to
their buffers. It is a global flag, and affects all ring buffers.
The buffers start out with tracing_on enabled.
There are now three flags that control recording into the buffers:
tracing_on: which affects all ring buffer tracers.
buffer->record_disabled: which affects an allocated buffer, which may be set
if an anomaly is detected, and tracing is disabled.
cpu_buffer->record_disabled: which is set by tracing_stop() or if an
anomaly is detected. tracing_start can not reenable this if
an anomaly occurred.
The userspace debugfs/tracing/tracing_enabled is implemented with
tracing_stop() but the user space code can not enable it if the kernel
called tracing_stop().
Userspace can enable the tracing_on even if the kernel disabled it.
It is just a switch used to stop tracing if a condition was hit.
tracing_on is not for protecting critical areas in the kernel nor is
it for stopping tracing if an anomaly occurred. This is because userspace
can reenable it at any time.
Side effect: With this patch, I discovered a dead variable in ftrace.c
called tracing_on. This patch removes it.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
2008-11-11 15:02:04 -05:00
..
irq
irq: make variable static
2008-10-22 07:37:17 +02:00
power
PM_TEST_SUSPEND should depend on RTC_CLASS, not RTC_LIB
2008-11-01 12:40:38 -07:00
time
Merge branch 'timers/range-hrtimers' into v28-range-hrtimers-for-linus-v2
2008-10-22 09:48:06 +02:00
trace
ring-buffer: buffer record on/off switch
2008-11-11 15:02:04 -05:00
.gitignore
acct.c
tty: Fix abusers of current->sighand->tty
2008-10-13 09:51:42 -07:00
audit.c
[PATCH] Fix the bug of using AUDIT_STATUS_RATE_LIMIT when set fail, no error output.
2008-08-01 12:15:16 -04:00
audit.h
audit_tree.c
[PATCH] get rid of nameidata in audit_tree
2008-10-23 05:12:53 -04:00
auditfilter.c
Re: [PATCH] the loginuid field should be output in all AUDIT_CONFIG_CHANGE audit messages
2008-08-01 12:15:03 -04:00
auditsc.c
tty: Fix abusers of current->sighand->tty
2008-10-13 09:51:42 -07:00
backtracetest.c
bounds.c
capability.c
security: Fix setting of PF_SUPERPRIV by __capable()
2008-08-14 22:59:43 +10:00
cgroup.c
cgroups: fix invalid cgrp->dentry before cgroup has been completely removed
2008-11-06 15:41:19 -08:00
cgroup_debug.c
cgroups: fix probable race with put_css_set[_taskexit] and find_css_set
2008-10-20 08:52:38 -07:00
cgroup_freezer.c
freezer_cg: simplify freezer_change_state()
2008-10-30 11:38:45 -07:00
compat.c
Merge branches 'timers/clocksource', 'timers/hrtimers', 'timers/nohz', 'timers/ntp', 'timers/posixtimers' and 'timers/debug' into v28-timers-for-linus
2008-10-20 13:14:06 +02:00
configs.c
kernel/configs.c: remove useless comments
2008-10-20 08:52:34 -07:00
cpu.c
cpumask: introduce new API, without changing anything
2008-11-06 09:05:33 +01:00
cpuset.c
cpuset: use seq_*mask_* to print masks
2008-10-20 08:52:39 -07:00
delayacct.c
per-task-delay-accounting: update taskstats for memory reclaim delay
2008-07-25 10:53:47 -07:00
dma-coherent.c
dma-coherent: export dma_[alloc|release]_from_coherent methods
2008-08-22 08:34:53 +02:00
dma.c
kernel/dma.c: remove a CVS keyword
2008-10-16 11:21:30 -07:00
exec_domain.c
proc: move /proc/execdomains to kernel/exec_domain.c
2008-10-23 14:30:41 +04:00
exit.c
Merge branch 'tracing-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-10-20 13:35:07 -07:00
extable.c
fork.c
Merge branch 'timers/range-hrtimers' into v28-range-hrtimers-for-linus-v2
2008-10-22 09:48:06 +02:00
freezer.c
freezer_cg: use thaw_process() in unfreeze_cgroup()
2008-10-30 11:38:45 -07:00
futex.c
hrtimer: make the futex() system call use the per process slack value
2008-09-11 07:17:00 -07:00
futex_compat.c
hrtimer.c
Merge branch 'timers/range-hrtimers' into v28-range-hrtimers-for-linus-v2
2008-10-22 09:48:06 +02:00
itimer.c
timers: fix itimer/many thread hang
2008-09-14 16:25:35 +02:00
kallsyms.c
kernel/kallsyms.c: fix double return
2008-10-16 11:21:32 -07:00
Kconfig.freezer
container freezer: implement freezer cgroup subsystem
2008-10-20 08:52:34 -07:00
Kconfig.hz
sched: fix SCHED_HRTICK dependency
2008-07-28 14:37:38 +02:00
Kconfig.preempt
kexec.c
kexec: fix crash_save_vmcoreinfo_init build problem
2008-10-20 15:28:50 -07:00
kfifo.c
kgdb.c
kgdb: call touch_softlockup_watchdog on resume
2008-10-06 13:50:59 -05:00
kmod.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus
2008-10-16 12:38:34 -07:00
kprobes.c
make kprobes.c:kretprobe_table_lock() static
2008-10-16 11:21:52 -07:00
ksysfs.c
profiling: dynamically enable readprofile at runtime
2008-10-16 11:21:31 -07:00
kthread.c
Merge branch 'tracing-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-10-20 13:35:07 -07:00
latencytop.c
lockdep.c
lockdep: fix irqs on/off ip tracing
2008-10-28 11:19:07 +01:00
lockdep_internals.h
lockdep: build fix
2008-08-13 12:55:10 +02:00
lockdep_proc.c
lockstat: fix numerical output rounding error
2008-08-26 10:37:46 +02:00
Makefile
Merge branch 'tracing/ftrace' into tracing/urgent
2008-10-22 09:08:14 +02:00
marker.c
markers: bit-field is not thread-safe nor smp-safe
2008-10-14 10:38:45 +02:00
module.c
Merge branch 'proc' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc
2008-10-23 12:04:37 -07:00
mutex-debug.c
mutex-debug.h
mutex.c
locking: fix mutex @key parameter kernel-doc notation
2008-07-28 18:12:36 +02:00
mutex.h
notifier.c
ftrace: ignore functions that cannot be kprobe-ed
2008-10-14 10:34:22 +02:00
ns_cgroup.c
cgroup_clone: use pid of newly created task for new cgroup
2008-07-25 10:53:37 -07:00
nsproxy.c
removed unused #include <linux/version.h>'s
2008-08-23 12:14:12 -07:00
panic.c
Make panic= and panic_on_oops into core_params
2008-10-22 10:00:25 +11:00
params.c
Fix compile warning in kernel/params.c
2008-10-23 12:09:00 -07:00
pid.c
pidns: remove now unused find_pid function.
2008-07-25 10:53:45 -07:00
pid_namespace.c
pid_ns: (BUG 11391) change ->child_reaper when init->group_leader exits
2008-09-02 19:21:38 -07:00
pm_qos_params.c
pm_qos_requirement might sleep
2008-09-02 19:21:40 -07:00
posix-cpu-timers.c
timers: fix itimer/many thread hang, v2
2008-09-23 13:38:44 +02:00
posix-timers.c
Merge branch 'timers/range-hrtimers' into v28-range-hrtimers-for-linus-v2
2008-10-22 09:48:06 +02:00
printk.c
printk: remove unused code from kernel/printk.c
2008-10-23 21:54:29 +02:00
profile.c
kernel/profile: fix profile_init() section mismatch
2008-10-30 11:38:46 -07:00
ptrace.c
make ptrace_untrace() static
2008-10-20 08:52:39 -07:00
rcuclassic.c
rcu: RCU-based detection of stalled CPUs for Classic RCU, fix
2008-10-03 10:41:00 +02:00
rcupdate.c
rcupdate: fix bug of rcu_barrier*()
2008-10-21 15:59:53 +02:00
rcupreempt.c
byteorder: remove direct includes of linux/byteorder/swab[b].h
2008-10-20 08:52:40 -07:00
rcupreempt_trace.c
rcu: trace fix possible mem-leak
2008-08-15 17:54:40 +02:00
rcutorture.c
byteorder: remove direct includes of linux/byteorder/swab[b].h
2008-10-20 12:51:53 -07:00
relay.c
relay: fix "full buffer with exactly full last subbuffer" accounting problem
2008-08-05 14:33:46 -07:00
res_counter.c
cgroup files: convert res_counter_write() to be a cgroups write_string() handler
2008-07-25 10:53:36 -07:00
resource.c
reserve_region_with_split: Fix GFP_KERNEL usage under spinlock
2008-11-01 09:53:58 -07:00
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
hrtimer: convert kernel/* to the new hrtimer apis
2008-09-05 21:35:13 -07:00
rtmutex.h
rtmutex_common.h
rwsem.c
sched.c
sched: fix memory leak in a failure path
2008-11-07 08:29:58 +01:00
sched_clock.c
sched_clock: prevent scd->clock from moving backwards
2008-10-10 11:17:04 +02:00
sched_cpupri.c
sched_cpupri.h
sched_debug.c
sched: change sched_debug's mode to 0444
2008-10-30 11:37:57 +01:00
sched_fair.c
sched: fix buddies for group scheduling
2008-11-05 10:30:15 +01:00
sched_features.h
sched: backward looking buddy
2008-11-05 10:30:14 +01:00
sched_idletask.c
sched: add CONFIG_SMP consistency
2008-10-22 10:01:52 +02:00
sched_rt.c
Merge commit 'v2.6.28-rc1' into sched/urgent
2008-10-24 12:48:46 +02:00
sched_stats.h
Merge branch 'proc' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc
2008-10-23 12:04:37 -07:00
seccomp.c
semaphore.c
semaphore: __down_common: use signal_pending_state()
2008-08-05 14:33:47 -07:00
signal.c
'kill sig -1' must only apply to caller's namespace
2008-10-30 11:38:46 -07:00
smp.c
generic-ipi: fix the smp_mb() placement
2008-11-06 08:41:56 +01:00
softirq.c
Merge branches 'timers/clocksource', 'timers/hrtimers', 'timers/nohz', 'timers/ntp', 'timers/posixtimers' and 'timers/debug' into v28-timers-for-linus
2008-10-20 13:14:06 +02:00
softlockup.c
Make the taint flags reliable
2008-10-16 11:21:31 -07:00
spinlock.c
lockdep: spin_lock_nest_lock(), checkpatch fixes
2008-08-13 13:56:51 +02:00
srcu.c
stacktrace.c
stop_machine.c
Revert "Call init_workqueues before pre smp initcalls."
2008-10-25 19:53:38 -07:00
sys.c
Merge branch 'timers/range-hrtimers' into v28-range-hrtimers-for-linus-v2
2008-10-22 09:48:06 +02:00
sys_ni.c
Configure out AIO support
2008-10-16 11:21:51 -07:00
sysctl.c
Merge commit 'v2.6.28-rc2' into tracing/urgent
2008-10-27 10:50:54 +01:00
sysctl_check.c
sysctl: check for bogus modes
2008-07-25 10:53:45 -07:00
taskstats.c
taskstats: remove initialization of static per-cpu variable
2008-07-25 10:53:47 -07:00
test_kprobes.c
time.c
select: add a timespec_add_safe() function
2008-09-05 21:34:57 -07:00
timeconst.pl
timer.c
Add round_jiffies_up and related routines
2008-11-06 08:42:48 +01:00
tracepoint.c
tracepoint: check if the probe has been registered
2008-10-27 16:45:46 +01:00
tsacct.c
task IO accounting: move all IO statistics in struct task_io_accounting
2008-07-27 16:12:28 -07:00
uid16.c
user.c
sched: rt-bandwidth for user grouping interface
2008-08-19 13:10:09 +02:00
user_namespace.c
removed unused #include <linux/version.h>'s
2008-08-23 12:14:12 -07:00
utsname.c
removed unused #include <linux/version.h>'s
2008-08-23 12:14:12 -07:00
utsname_sysctl.c
sysctl: simplify ->strategy
2008-10-16 11:21:47 -07:00
wait.c
wait: kill is_sync_wait()
2008-10-16 11:21:31 -07:00
workqueue.c
cpumask: introduce new API, without changing anything
2008-11-06 09:05:33 +01:00