ftrace, perf: Add support to use function tracepoint in perf
authorJiri Olsa <jolsa@redhat.com>
Wed, 15 Feb 2012 14:51:52 +0000 (15:51 +0100)
committerSteven Rostedt <rostedt@goodmis.org>
Tue, 21 Feb 2012 16:08:27 +0000 (11:08 -0500)
commitced39002f5ea736b716ae233fb68b26d59783912
tree4942ffe3b9e26d5122a5febb885d0b541e3aea33
parente59a0bff3ecf389951e3c9378ddfd00f6448bfaa
ftrace, perf: Add support to use function tracepoint in perf

Adding perf registration support for the ftrace function event,
so it is now possible to register it via perf interface.

The perf_event struct statically contains ftrace_ops as a handle
for function tracer. The function tracer is registered/unregistered
in open/close actions.

To be efficient, we enable/disable ftrace_ops each time the traced
process is scheduled in/out (via TRACE_REG_PERF_(ADD|DELL) handlers).
This way tracing is enabled only when the process is running.
Intentionally using this way instead of the event's hw state
PERF_HES_STOPPED, which would not disable the ftrace_ops.

It is now possible to use function trace within perf commands
like:

  perf record -e ftrace:function ls
  perf stat -e ftrace:function ls

Allowed only for root.

Link: http://lkml.kernel.org/r/1329317514-8131-6-git-send-email-jolsa@redhat.com
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
include/linux/perf_event.h
kernel/trace/trace.h
kernel/trace/trace_entries.h
kernel/trace/trace_event_perf.c
kernel/trace/trace_export.c