• Masami Hiramatsu's avatar
    perf probe: Fix to search local variables in appropriate scope · 221d0611
    Masami Hiramatsu authored
    Fix perf probe to search local variables in appropriate local inlined
    function scope. For example, pre_schedule() has only 2 local variables,
    as below;
    
    $ perf probe -L pre_schedule
    <pre_schedule@/home/mhiramat/ksrc/linux-2.6/kernel/sched.c:0>
          0  static inline void pre_schedule(struct rq *rq, struct task_struct *prev)
             {
          2         if (prev->sched_class->pre_schedule)
          3                 prev->sched_class->pre_schedule(rq, prev);
             }
    
    However, current perf probe shows 4 local variables on pre_schedule(),
    because it searches variables in the caller(schedule()) scope.
    
    $ perf probe -V pre_schedule
    Available variables at pre_schedule
            @<schedule+445>
                    int     cpu
                    long unsigned int*      switch_count
                    struct rq*      rq
                    struct task_struct*     prev
    
    This patch fixes this issue by searching variables in the local scope of
    the instance of inlined function. Here is the result.
    
    $ perf probe -V pre_schedule
    Available variables at pre_schedule
            @<schedule+445>
                    struct rq*      rq
                    struct task_struct*     prev
    
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: yrl.pp-manager.tt@hitachi.com
    Link: http://lkml.kernel.org/r/20110811110259.19900.85664.stgit@fedora15Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    221d0611
probe-finder.c 39.3 KB