switch-linux/tools/perf
Jiri Olsa 29208e573a perf tools: Fix tracing info recording
Fixing the way the tracing information is stored within record command.
The current implementation is causing issues for pipe output.

Following commands fail currently:
	perf script syscall-counts ls
	perf record -e syscalls:sys_exit_read ls | ./perf report -i -

The tracing information is part of the perf data file. It contains
several files from within the tracing debugfs and procs directories.

Beside some static header files, for each tracing event the format
file is added. The /proc/kallsyms file is also added.

The tracing data are stored with preceeding size. This is causing some
dificulties for pipe output, since there's no way to tell debugfs/proc
file size before reading it. So, for pipe output, all the debugfs files
were read twice. Once to get the overall size and once to store the
content itself. This can cause problem in case any of these file
changed, within the storage time.

To fix this behaviour and ensure the integrity of the tracing data, we:
    - read debugfs/proc file into the temp file
    - get temp file size and dump it to the pipe
    - dump the temp file contents to the pipe

Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Neil Horman <nhorman@tuxdriver.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/20111020135943.GD2092@jolsa.brq.redhat.com
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-10-20 12:41:42 -02:00
..
arch perf tools: Make perf.data more self-descriptive (v8) 2011-10-07 17:01:24 -03:00
bench
config
Documentation perf ui browser: Make the colors configurable and change the defaults 2011-10-18 17:03:32 -02:00
python
scripts
util perf tools: Fix tracing info recording 2011-10-20 12:41:42 -02:00
.gitignore
builtin-annotate.c perf tools: Make --no-asm-raw the default 2011-10-07 17:01:32 -03:00
builtin-bench.c
builtin-buildid-cache.c
builtin-buildid-list.c
builtin-diff.c perf hists: Allow limiting the number of rows and columns in fprintf 2011-10-07 12:11:49 -03:00
builtin-evlist.c
builtin-help.c
builtin-inject.c
builtin-kmem.c
builtin-kvm.c
builtin-list.c
builtin-lock.c
builtin-probe.c
builtin-record.c perf tools: Make perf.data more self-descriptive (v8) 2011-10-07 17:01:24 -03:00
builtin-report.c perf tools: Make --no-asm-raw the default 2011-10-07 17:01:32 -03:00
builtin-sched.c
builtin-script.c perf tools: Make perf.data more self-descriptive (v8) 2011-10-07 17:01:24 -03:00
builtin-stat.c perf tools: Make stat/record print fatal signals of the target program 2011-09-29 17:09:46 -03:00
builtin-test.c
builtin-timechart.c
builtin-top.c perf top: Fix the 'E' hotkey, select among multiple events 2011-10-17 09:10:24 -02:00
builtin.h perf tools: Make perf.data more self-descriptive (v8) 2011-10-07 17:01:24 -03:00
command-list.txt
CREDITS
design.txt
Makefile perf top: Reuse the 'report' hist_entry/hists classes 2011-10-07 16:56:44 -03:00
MANIFEST
perf-archive.sh
perf.c perf ui browser: Handle SIGWINCH 2011-10-13 08:52:46 -03:00
perf.h perf ui browser: Handle SIGWINCH 2011-10-13 08:52:46 -03:00