Commit 99329c44 authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Frederic Weisbecker

tracing/kprobes: Remove '$ra' special variable

Remove '$ra' (return address) because it is already shown at the head of
each entry.
Signed-off-by: default avatarMasami Hiramatsu <mhiramat@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Jim Keniston <jkenisto@us.ibm.com>
Cc: Frank Ch. Eigler <fche@redhat.com>
LKML-Reference: <20091007222748.1684.12711.stgit@dhcp-100-2-132.bos.redhat.com>
Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
parent 405b2651
Kprobe-based Event Tracer Kprobe-based Event Tracer
========================= =========================
Documentation is written by Masami Hiramatsu Documentation is written by Masami Hiramatsu
...@@ -42,7 +42,6 @@ Synopsis of kprobe_events ...@@ -42,7 +42,6 @@ Synopsis of kprobe_events
$sa : Fetch stack address. $sa : Fetch stack address.
$aN : Fetch function argument. (N >= 0)(*) $aN : Fetch function argument. (N >= 0)(*)
$rv : Fetch return value.(**) $rv : Fetch return value.(**)
$ra : Fetch return address.(**)
+|-offs(FETCHARG) : Fetch memory at FETCHARG +|- offs address.(***) +|-offs(FETCHARG) : Fetch memory at FETCHARG +|- offs address.(***)
NAME=FETCHARG: Set NAME as the argument name of FETCHARG. NAME=FETCHARG: Set NAME as the argument name of FETCHARG.
...@@ -91,10 +90,10 @@ as below. ...@@ -91,10 +90,10 @@ as below.
1st to 4th arguments as "myprobe" event. As this example shows, users can 1st to 4th arguments as "myprobe" event. As this example shows, users can
choose more familiar names for each arguments. choose more familiar names for each arguments.
echo r:myretprobe do_sys_open $rv $ra >> /sys/kernel/debug/tracing/kprobe_events echo r:myretprobe do_sys_open $rv >> /sys/kernel/debug/tracing/kprobe_events
This sets a kretprobe on the return point of do_sys_open() function with This sets a kretprobe on the return point of do_sys_open() function with
recording return value and return address as "myretprobe" event. recording return value as "myretprobe" event.
You can see the format of these events via You can see the format of these events via
/sys/kernel/debug/tracing/events/kprobes/<EVENT>/format. /sys/kernel/debug/tracing/events/kprobes/<EVENT>/format.
...@@ -138,11 +137,11 @@ events, you need to enable it. ...@@ -138,11 +137,11 @@ events, you need to enable it.
# TASK-PID CPU# TIMESTAMP FUNCTION # TASK-PID CPU# TIMESTAMP FUNCTION
# | | | | | # | | | | |
<...>-1447 [001] 1038282.286875: myprobe: (do_sys_open+0x0/0xd6) dfd=3 filename=7fffd1ec4440 flags=8000 mode=0 <...>-1447 [001] 1038282.286875: myprobe: (do_sys_open+0x0/0xd6) dfd=3 filename=7fffd1ec4440 flags=8000 mode=0
<...>-1447 [001] 1038282.286878: myretprobe: (sys_openat+0xc/0xe <- do_sys_open) $rv=fffffffffffffffe $ra=ffffffff81367a3a <...>-1447 [001] 1038282.286878: myretprobe: (sys_openat+0xc/0xe <- do_sys_open) $rv=fffffffffffffffe
<...>-1447 [001] 1038282.286885: myprobe: (do_sys_open+0x0/0xd6) dfd=ffffff9c filename=40413c flags=8000 mode=1b6 <...>-1447 [001] 1038282.286885: myprobe: (do_sys_open+0x0/0xd6) dfd=ffffff9c filename=40413c flags=8000 mode=1b6
<...>-1447 [001] 1038282.286915: myretprobe: (sys_open+0x1b/0x1d <- do_sys_open) $rv=3 $ra=ffffffff81367a3a <...>-1447 [001] 1038282.286915: myretprobe: (sys_open+0x1b/0x1d <- do_sys_open) $rv=3
<...>-1447 [001] 1038282.286969: myprobe: (do_sys_open+0x0/0xd6) dfd=ffffff9c filename=4041c6 flags=98800 mode=10 <...>-1447 [001] 1038282.286969: myprobe: (do_sys_open+0x0/0xd6) dfd=ffffff9c filename=4041c6 flags=98800 mode=10
<...>-1447 [001] 1038282.286976: myretprobe: (sys_open+0x1b/0x1d <- do_sys_open) $rv=3 $ra=ffffffff81367a3a <...>-1447 [001] 1038282.286976: myretprobe: (sys_open+0x1b/0x1d <- do_sys_open) $rv=3
Each line shows when the kernel hits an event, and <- SYMBOL means kernel Each line shows when the kernel hits an event, and <- SYMBOL means kernel
......
...@@ -85,11 +85,6 @@ static __kprobes unsigned long fetch_retvalue(struct pt_regs *regs, ...@@ -85,11 +85,6 @@ static __kprobes unsigned long fetch_retvalue(struct pt_regs *regs,
return regs_return_value(regs); return regs_return_value(regs);
} }
static __kprobes unsigned long fetch_ip(struct pt_regs *regs, void *dummy)
{
return instruction_pointer(regs);
}
static __kprobes unsigned long fetch_stack_address(struct pt_regs *regs, static __kprobes unsigned long fetch_stack_address(struct pt_regs *regs,
void *dummy) void *dummy)
{ {
...@@ -234,8 +229,6 @@ static int probe_arg_string(char *buf, size_t n, struct fetch_func *ff) ...@@ -234,8 +229,6 @@ static int probe_arg_string(char *buf, size_t n, struct fetch_func *ff)
ret = snprintf(buf, n, "@%s%+ld", sc->symbol, sc->offset); ret = snprintf(buf, n, "@%s%+ld", sc->symbol, sc->offset);
} else if (ff->func == fetch_retvalue) } else if (ff->func == fetch_retvalue)
ret = snprintf(buf, n, "$rv"); ret = snprintf(buf, n, "$rv");
else if (ff->func == fetch_ip)
ret = snprintf(buf, n, "$ra");
else if (ff->func == fetch_stack_address) else if (ff->func == fetch_stack_address)
ret = snprintf(buf, n, "$sa"); ret = snprintf(buf, n, "$sa");
else if (ff->func == fetch_indirect) { else if (ff->func == fetch_indirect) {
...@@ -448,9 +441,6 @@ static int parse_probe_vars(char *arg, struct fetch_func *ff, int is_return) ...@@ -448,9 +441,6 @@ static int parse_probe_vars(char *arg, struct fetch_func *ff, int is_return)
if (is_return && arg[1] == 'v') { if (is_return && arg[1] == 'v') {
ff->func = fetch_retvalue; ff->func = fetch_retvalue;
ff->data = NULL; ff->data = NULL;
} else if (is_return && arg[1] == 'a') {
ff->func = fetch_ip;
ff->data = NULL;
} else } else
ret = -EINVAL; ret = -EINVAL;
break; break;
...@@ -560,7 +550,6 @@ static int create_trace_probe(int argc, char **argv) ...@@ -560,7 +550,6 @@ static int create_trace_probe(int argc, char **argv)
* Fetch args: * Fetch args:
* $aN : fetch Nth of function argument. (N:0-) * $aN : fetch Nth of function argument. (N:0-)
* $rv : fetch return value * $rv : fetch return value
* $ra : fetch return address
* $sa : fetch stack address * $sa : fetch stack address
* $sN : fetch Nth of stack (N:0-) * $sN : fetch Nth of stack (N:0-)
* @ADDR : fetch memory at ADDR (ADDR should be in kernel) * @ADDR : fetch memory at ADDR (ADDR should be in kernel)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment