mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-02 20:29:20 +00:00
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>
This commit is contained in:
parent
e59a0bff3e
commit
ced39002f5
5 changed files with 109 additions and 2 deletions
|
@ -55,7 +55,7 @@
|
|||
/*
|
||||
* Function trace entry - function address and parent function address:
|
||||
*/
|
||||
FTRACE_ENTRY(function, ftrace_entry,
|
||||
FTRACE_ENTRY_REG(function, ftrace_entry,
|
||||
|
||||
TRACE_FN,
|
||||
|
||||
|
@ -64,7 +64,9 @@ FTRACE_ENTRY(function, ftrace_entry,
|
|||
__field( unsigned long, parent_ip )
|
||||
),
|
||||
|
||||
F_printk(" %lx <-- %lx", __entry->ip, __entry->parent_ip)
|
||||
F_printk(" %lx <-- %lx", __entry->ip, __entry->parent_ip),
|
||||
|
||||
perf_ftrace_event_register
|
||||
);
|
||||
|
||||
/* Function call entry */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue