• Jiri Olsa's avatar
    tools lib traceevent: Add function plugin · 07a180a0
    Jiri Olsa authored
    Backporting function plugin.
    
    Backported from Steven Rostedt's trace-cmd repo (HEAD 0f2c2fb):
    git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git
    
    This plugin adds function and parent function fields resolving for
    ftrace:function tracepoint event.
    
    The diff of 'perf script' output generated by old and new code:
    (data was generated by 'perf record -e ftrace:function ls')
    
      --- script.function.old
      +++ script.function.new
      -              ls 10781 [001] 32667.291379: ftrace:function:  ffffffff811adb80 <-- ffffffff811afc48
      -              ls 10781 [001] 32667.291379: ftrace:function:  ffffffff811b35d0 <-- ffffffff811adb9b
      -              ls 10781 [001] 32667.291380: ftrace:function:  ffffffff811b3520 <-- ffffffff811b35e8
      -              ls 10781 [001] 32667.291380: ftrace:function:  ffffffff811b2720 <-- ffffffff811b3549
      -              ls 10781 [001] 32667.291381: ftrace:function:  ffffffff81297e10 <-- ffffffff811b356c
      -              ls 10781 [001] 32667.291381: ftrace:function:  ffffffff81298f40 <-- ffffffff81297e2c
      -              ls 10781 [001] 32667.291382: ftrace:function:  ffffffff81076160 <-- ffffffff811afbf0
      -              ls 10781 [001] 32667.291383: ftrace:function:  ffffffff811c3eb0 <-- ffffffff811afbfc
      -              ls 10781 [001] 32667.291383: ftrace:function:  ffffffff8164e100 <-- ffffffff811c3ed8
      -              ls 10781 [001] 32667.291384: ftrace:function:  ffffffff811a5d10 <-- ffffffff811c3f53
      -              ls 10781 [001] 32667.291384: ftrace:function:  ffffffff811e8e70 <-- ffffffff811a5d58
      -              ls 10781 [001] 32667.291385: ftrace:function:  ffffffff811f38e0 <-- ffffffff811a5d63
      -              ls 10781 [001] 32667.291385: ftrace:function:  ffffffff811a9ff0 <-- ffffffff811a5d6b
      -              ls 10781 [001] 32667.291386: ftrace:function:  ffffffff811a9fa0 <-- ffffffff811aa015
      -              ls 10781 [001] 32667.291387: ftrace:function:  ffffffff810851c0 <-- ffffffff811aa053
      -              ls 10781 [001] 32667.291387: ftrace:function:  ffffffff81090e00 <-- ffffffff81085211
      +              ls 10781 [001] 32667.291379: ftrace:function: would_dump <-- setup_new_exec
      +              ls 10781 [001] 32667.291379: ftrace:function:    inode_permission <-- would_dump
      +              ls 10781 [001] 32667.291380: ftrace:function:       __inode_permission <-- inode_permission
      +              ls 10781 [001] 32667.291380: ftrace:function:          generic_permission <-- __inode_permission
      +              ls 10781 [001] 32667.291381: ftrace:function:          security_inode_permission <-- __inode_permission
      +              ls 10781 [001] 32667.291381: ftrace:function:             cap_inode_permission <-- security_inode_permission
      +              ls 10781 [001] 32667.291382: ftrace:function: flush_signal_handlers <-- setup_new_exec
      +              ls 10781 [001] 32667.291383: ftrace:function: do_close_on_exec <-- setup_new_exec
      +              ls 10781 [001] 32667.291383: ftrace:function:    _raw_spin_lock <-- do_close_on_exec
      +              ls 10781 [001] 32667.291384: ftrace:function:    filp_close <-- do_close_on_exec
      +              ls 10781 [001] 32667.291384: ftrace:function:       dnotify_flush <-- filp_close
      +              ls 10781 [001] 32667.291385: ftrace:function:       locks_remove_posix <-- filp_close
      +              ls 10781 [001] 32667.291385: ftrace:function:       fput <-- filp_close
      +              ls 10781 [001] 32667.291386: ftrace:function:          file_sb_list_del <-- fput
      +              ls 10781 [001] 32667.291387: ftrace:function:          task_work_add <-- fput
      +              ls 10781 [001] 32667.291387: ftrace:function:             kick_process <-- task_work_add
    
    Removing options support as it's not backported yet.
    Currently this plugin supports 2 options:
     'parent' to display parent function
     'indent' to show function call indents
    
    Enabling both of them by default.
    Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
    Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Link: http://lkml.kernel.org/r/1386076182-14484-19-git-send-email-jolsa@redhat.comSigned-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    07a180a0
plugin_function.c 3.57 KB