Jiri Olsa
be1eca3931
tracing: Fix function graph trace_pipe to properly display failed entries
...
There is a case where the graph tracer might get confused and omits
displaying of a single record. This applies mostly with the trace_pipe
since it is unlikely that the trace_seq buffer will overflow with the
trace file.
As the function_graph tracer goes through the trace entries keeping a
pointer to the current record:
current -> func1 ENTRY
func2 ENTRY
func2 RETURN
func1 RETURN
When an function ENTRY is encountered, it moves the pointer to the
next entry to check if the function is a nested or leaf function.
func1 ENTRY
current -> func2 ENTRY
func2 RETURN
func1 RETURN
If the rest of the writing of the function fills the trace_seq buffer,
then the trace_pipe read will ignore this entry. The next read will
Now start at the current location, but the first entry (func1) will
be discarded.
This patch keeps a copy of the current entry in the iterator private
storage and will keep track of when the trace_seq buffer fills. When
the trace_seq buffer fills, it will reuse the copy of the entry in the
next iteration.
[
This patch has been largely modified by Steven Rostedt in order to
clean it up and simplify it. The original idea and concept was from
Jirka and for that, this patch will go under his name to give him
the credit he deserves. But because this was modify by Steven Rostedt
anything wrong with the patch should be blamed on Steven.
]
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
LKML-Reference: <1259067458-27143-1-git-send-email-jolsa@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2009-12-09 14:09:06 -05:00
..
gcov
microblaze: Enable GCOV_PROFILE_ALL
2009-09-21 14:29:21 +02:00
irq
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-12-05 09:53:08 -08:00
power
PM / Hibernate: Add newline to load_image() fail path
2009-11-03 11:03:09 +01:00
time
headers: remove sched.h from interrupt.h
2009-10-11 11:20:58 -07:00
trace
tracing: Fix function graph trace_pipe to properly display failed entries
2009-12-09 14:09:06 -05:00
.gitignore
acct.c
bsdacct: switch credentials for writing to the accounting file
2009-08-24 11:33:40 +10:00
async.c
async: Fix lack of boot-time console due to insufficient synchronization
2009-06-08 12:31:53 -07:00
audit.c
Audit: send signal info if selinux is disabled
2009-09-24 03:50:26 -04:00
audit.h
Fix rule eviction order for AUDIT_DIR
2009-06-24 00:02:38 -04:00
audit_tree.c
Fix rule eviction order for AUDIT_DIR
2009-06-24 00:02:38 -04:00
audit_watch.c
Audit: reorganize struct audit_watch to save 8 bytes
2009-09-24 03:50:25 -04:00
auditfilter.c
Audit: clean up all op= output to include string quoting
2009-06-24 00:00:52 -04:00
auditsc.c
Audit: rearrange audit_context to save 16 bytes per struct
2009-09-24 03:50:26 -04:00
backtracetest.c
bounds.c
capability.c
remove CONFIG_SECURITY_FILE_CAPABILITIES compile option
2009-11-24 15:06:47 +11:00
cgroup.c
cgroup: fix strstrip() misuse
2009-10-29 07:39:25 -07:00
cgroup_freezer.c
cgroups: let ss->can_attach and ss->attach do whole threadgroups at a time
2009-09-24 07:20:58 -07:00
compat.c
configs.c
cpu.c
Merge branch 'x86-pat-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-09-15 09:19:38 -07:00
cpuset.c
cpumask: Partition_sched_domains takes array of cpumask_var_t
2009-11-04 13:16:40 +01:00
cred-internals.h
cred.c
creds_are_invalid() needs to be exported for use by modules:
2009-09-23 11:02:26 -07:00
delayacct.c
headers: taskstats_kern.h trim
2009-09-18 09:48:52 -07:00
dma.c
exec_domain.c
exit.c
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-12-05 15:30:49 -08:00
extable.c
fork.c
sched, cputime: Introduce thread_group_times()
2009-12-02 17:32:40 +01:00
freezer.c
sched: fix nr_uninterruptible accounting of frozen tasks really
2009-07-18 14:19:53 +02:00
futex.c
futex: Fix spurious wakeup for requeue_pi really
2009-10-28 20:34:34 +01:00
futex_compat.c
futex: Fix compat_futex to be same as futex for REQUEUE_PI
2009-08-10 15:41:12 +02:00
groups.c
groups: move code to kernel/groups.c
2009-06-16 19:47:48 -07:00
hrtimer.c
Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-10-05 12:04:16 -07:00
hung_task.c
softlockup: Fix hung_task_check_count sysctl
2009-11-27 06:21:57 +01:00
hw_breakpoint.c
hw-breakpoints: Use struct perf_event_attr to define kernel breakpoints
2009-11-27 06:22:59 +01:00
itimer.c
itimers: Add tracepoints for itimer
2009-08-29 14:10:07 +02:00
kallsyms.c
hw-breakpoints: Fix broken hw-breakpoint sample module
2009-11-10 11:23:29 +01:00
Kconfig.freezer
Kconfig.hz
Kconfig.locks
mutex: Better control mutex adaptive spinning config
2009-12-03 11:50:11 +01:00
Kconfig.preempt
kexec.c
kexec: fix omitting offset in extended crashkernel syntax
2009-07-29 19:10:34 -07:00
kfifo.c
kfifo: Use "const" definitions
2009-09-19 13:13:17 -07:00
kgdb.c
sched: Remove unused __schedule() declaration
2009-11-04 11:43:42 +01:00
kmod.c
security: report the module name to security_module_request
2009-11-10 09:33:46 +11:00
kprobes.c
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-12-05 15:30:21 -08:00
ksysfs.c
kthread.c
sched: Fix kthread_bind() by moving the body of kthread_bind() to sched.c
2009-11-03 07:25:00 +01:00
latencytop.c
lockdep.c
tracing: Rename 'lockdep' event subsystem into 'lock'
2009-11-13 10:48:27 +01:00
lockdep_internals.h
lockdep: BFS cleanup
2009-07-24 10:53:29 +02:00
lockdep_proc.c
seq_file: constify seq_operations
2009-09-23 07:39:29 -07:00
lockdep_states.h
Makefile
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-12-05 15:30:21 -08:00
module.c
modules: don't export section names of empty sections via sysfs
2009-12-02 15:38:25 -08:00
mutex-debug.c
headers: remove sched.h from interrupt.h
2009-10-11 11:20:58 -07:00
mutex-debug.h
mutex.c
mutex: Better control mutex adaptive spinning config
2009-12-03 11:50:11 +01:00
mutex.h
notifier.c
kprobes: Fix to add __kprobes to notify_die
2009-08-30 03:08:26 +02:00
ns_cgroup.c
cgroups: let ss->can_attach and ss->attach do whole threadgroups at a time
2009-09-24 07:20:58 -07:00
nsproxy.c
nsproxy: extract create_nsproxy()
2009-06-18 13:03:56 -07:00
panic.c
Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-10-08 12:16:35 -07:00
params.c
param: fix setting arrays of bool
2009-10-29 08:56:20 +10:30
perf_event.c
perf: Don't free perf_mmap_data until work has been done
2009-12-02 09:30:18 +01:00
pid.c
mm: also use alloc_large_system_hash() for the PID hash table
2009-09-22 07:17:38 -07:00
pid_namespace.c
pidns: deny CLONE_PARENT|CLONE_NEWPID combination
2009-09-24 07:21:04 -07:00
pm_qos_params.c
posix-cpu-timers.c
itimers: Add tracepoints for itimer
2009-08-29 14:10:07 +02:00
posix-timers.c
time: Introduce CLOCK_REALTIME_COARSE
2009-08-21 21:43:46 +02:00
printk.c
Merge branch 'core-printk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-12-05 09:50:22 -08:00
profile.c
kernel/profile.c: Switch /proc/irq/prof_cpu_mask to seq_file
2009-09-20 20:15:40 +02:00
ptrace.c
ptrace: __ptrace_detach: do __wake_up_parent() if we reap the tracee
2009-09-24 07:20:59 -07:00
rcupdate.c
rcu: Re-arrange code to reduce #ifdef pain
2009-11-22 18:58:16 +01:00
rcutiny.c
rcu: Eliminate unneeded function wrapping
2009-11-22 18:58:16 +01:00
rcutorture.c
rcu: Add expedited grace-period support for preemptible RCU
2009-12-03 11:35:25 +01:00
rcutree.c
rcu: Add expedited grace-period support for preemptible RCU
2009-12-03 11:35:25 +01:00
rcutree.h
rcu: Add expedited grace-period support for preemptible RCU
2009-12-03 11:35:25 +01:00
rcutree_plugin.h
rcu: Add expedited grace-period support for preemptible RCU
2009-12-03 11:35:25 +01:00
rcutree_trace.c
rcu: Add expedited grace-period support for preemptible RCU
2009-12-03 11:35:25 +01:00
relay.c
const: mark struct vm_struct_operations
2009-09-27 11:39:25 -07:00
res_counter.c
memcg: some modification to softlimit under hierarchical memory reclaim.
2009-10-01 16:11:13 -07:00
resource.c
walk system ram range
2009-09-23 07:39:41 -07:00
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
rtmutex: Avoid deadlock in rt_mutex_start_proxy_lock()
2009-08-06 05:50:21 +02:00
rtmutex.h
rtmutex_common.h
rwsem.c
sched.c
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-12-05 15:30:49 -08:00
sched_clock.c
sched_clock: Fix atomicity/continuity bug by using cmpxchg64()
2009-09-30 22:56:10 +02:00
sched_cpupri.c
sched: Add new prio to cpupri before removing old prio
2009-08-02 14:26:09 +02:00
sched_cpupri.h
sched_debug.c
sched: Rate-limit newidle
2009-11-04 19:13:48 +01:00
sched_fair.c
Merge branch 'sched/urgent' into sched/core
2009-11-26 10:50:42 +01:00
sched_features.h
sched: Add new wakeup preemption mode: WAKEUP_RUNNING
2009-09-17 10:17:25 +02:00
sched_idletask.c
sched: Simplify sys_sched_rr_get_interval() system call
2009-09-21 09:53:55 +02:00
sched_rt.c
cpumask: Simplify sched_rt.c
2009-11-04 13:16:38 +01:00
sched_stats.h
seccomp.c
semaphore.c
signal.c
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-12-05 15:30:21 -08:00
slow-work-debugfs.c
SLOW_WORK: Move slow_work's proc file to debugfs
2009-12-01 08:20:31 -08:00
slow-work.c
SLOW_WORK: Move slow_work's proc file to debugfs
2009-12-01 08:20:31 -08:00
slow-work.h
SLOW_WORK: Move slow_work's proc file to debugfs
2009-12-01 08:20:31 -08:00
smp.c
generic-ipi: Add smp_call_function_any()
2009-11-18 14:52:25 +01:00
softirq.c
rcu: Cleanup: balance rcu_irq_enter()/rcu_irq_exit() calls
2009-11-02 16:06:37 +01:00
softlockup.c
sysctl: remove "struct file *" argument of ->proc_handler
2009-09-24 07:21:04 -07:00
spinlock.c
locking: Reduce ifdefs in kernel/spinlock.c
2009-11-13 20:53:28 +01:00
srcu.c
rcu: Add synchronize_srcu_expedited()
2009-10-26 09:40:30 +01:00
stacktrace.c
stop_machine.c
sys.c
sched, cputime: Introduce thread_group_times()
2009-12-02 17:32:40 +01:00
sys_ni.c
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
2009-09-24 15:13:11 -07:00
sysctl.c
Merge branch 'core-printk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-12-05 09:50:22 -08:00
sysctl_check.c
sysctl: fix false positives when PROC_SYSCTL=n
2009-10-29 07:39:30 -07:00
taskstats.c
genetlink: make netns aware
2009-07-12 14:03:27 -07:00
test_kprobes.c
time.c
sched, time: Define nsecs_to_jiffies()
2009-11-26 12:59:20 +01:00
timeconst.pl
timer.c
Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-09-23 09:46:15 -07:00
tracepoint.c
trivial: fix typo "to to" in multiple files
2009-09-21 15:14:55 +02:00
tsacct.c
uid16.c
headers: utsname.h redux
2009-09-23 18:13:10 -07:00
up.c
user.c
uids: Prevent tear down race
2009-11-02 16:02:39 +01:00
user_namespace.c
utsname.c
utsns: extract creeate_uts_ns()
2009-06-18 13:03:55 -07:00
utsname_sysctl.c
sysctl: remove "struct file *" argument of ->proc_handler
2009-09-24 07:21:04 -07:00
wait.c
locking, sched: Give waitqueue spinlocks their own lockdep classes
2009-08-10 14:43:09 +02:00
workqueue.c
workqueue: fix race condition in schedule_on_each_cpu()
2009-11-17 17:40:33 -08:00