lkml.org 
[lkml]   [2009]   [Oct]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/probes] tracing/kprobes: Remove '$ra' special variable
    Commit-ID:  99329c44f28a1b7ac83beebfb4319e612042e319
    Gitweb: http://git.kernel.org/tip/99329c44f28a1b7ac83beebfb4319e612042e319
    Author: Masami Hiramatsu <mhiramat@redhat.com>
    AuthorDate: Wed, 7 Oct 2009 18:27:48 -0400
    Committer: Frederic Weisbecker <fweisbec@gmail.com>
    CommitDate: Mon, 12 Oct 2009 19:24:05 +0200

    tracing/kprobes: Remove '$ra' special variable

    Remove '$ra' (return address) because it is already shown at the head of
    each entry.

    Signed-off-by: Masami 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: Frederic Weisbecker <fweisbec@gmail.com>
    ---
    Documentation/trace/kprobetrace.txt | 13 ++++++-------
    kernel/trace/trace_kprobe.c | 11 -----------
    2 files changed, 6 insertions(+), 18 deletions(-)

    diff --git a/Documentation/trace/kprobetrace.txt b/Documentation/trace/kprobetrace.txt
    index 33f5318..4208253 100644
    --- a/Documentation/trace/kprobetrace.txt
    +++ b/Documentation/trace/kprobetrace.txt
    @@ -1,4 +1,4 @@
    - Kprobe-based Event Tracer
    + Kprobe-based Event Tracer
    =========================

    Documentation is written by Masami Hiramatsu
    @@ -42,7 +42,6 @@ Synopsis of kprobe_events
    $sa : Fetch stack address.
    $aN : Fetch function argument. (N >= 0)(*)
    $rv : Fetch return value.(**)
    - $ra : Fetch return address.(**)
    +|-offs(FETCHARG) : Fetch memory at FETCHARG +|- offs address.(***)
    NAME=FETCHARG: Set NAME as the argument name of FETCHARG.

    @@ -91,10 +90,10 @@ as below.
    1st to 4th arguments as "myprobe" event. As this example shows, users can
    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
    -recording return value and return address as "myretprobe" event.
    +recording return value as "myretprobe" event.
    You can see the format of these events via
    /sys/kernel/debug/tracing/events/kprobes/<EVENT>/format.

    @@ -138,11 +137,11 @@ events, you need to enable it.
    # 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.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.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.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
    diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
    index f63ead0..ba6d3bd 100644
    --- a/kernel/trace/trace_kprobe.c
    +++ b/kernel/trace/trace_kprobe.c
    @@ -85,11 +85,6 @@ static __kprobes unsigned long fetch_retvalue(struct pt_regs *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,
    void *dummy)
    {
    @@ -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);
    } else if (ff->func == fetch_retvalue)
    ret = snprintf(buf, n, "$rv");
    - else if (ff->func == fetch_ip)
    - ret = snprintf(buf, n, "$ra");
    else if (ff->func == fetch_stack_address)
    ret = snprintf(buf, n, "$sa");
    else if (ff->func == fetch_indirect) {
    @@ -448,9 +441,6 @@ static int parse_probe_vars(char *arg, struct fetch_func *ff, int is_return)
    if (is_return && arg[1] == 'v') {
    ff->func = fetch_retvalue;
    ff->data = NULL;
    - } else if (is_return && arg[1] == 'a') {
    - ff->func = fetch_ip;
    - ff->data = NULL;
    } else
    ret = -EINVAL;
    break;
    @@ -560,7 +550,6 @@ static int create_trace_probe(int argc, char **argv)
    * Fetch args:
    * $aN : fetch Nth of function argument. (N:0-)
    * $rv : fetch return value
    - * $ra : fetch return address
    * $sa : fetch stack address
    * $sN : fetch Nth of stack (N:0-)
    * @ADDR : fetch memory at ADDR (ADDR should be in kernel)

    \
     
     \ /
      Last update: 2009-10-17 12:07    [W:0.030 / U:64.324 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site