• Y
    perf script: Support using -f to override perf.data file ownership · 06af0f2c
    Yunlong Song 提交于
    Enable perf script to use perf.data when it is not owned by current user
    or root. Change the short option name of --fields to -F to avoid confusion
    with --force.
    
    Example:
    
     # perf record ls
     # chown Yunlong.Song:Yunlong.Song perf.data
     # ls -al perf.data
     -rw------- 1 Yunlong.Song Yunlong.Song 28360 Apr  2 14:53 perf.data
     # id
     uid=0(root) gid=0(root) groups=0(root),64(pkcs11)
    
    Before this patch:
    
     # perf script
     File perf.data not owned by current user or root (use -f to override)
     # perf script -f
       Error: switch `f' requires a value
    
      usage: perf script [<options>]
         or: perf script [<options>] record <script> [<record-options>] <command>
         or: perf script [<options>] report <script> [script-args]
         or: perf script [<options>] <script> [<record-options>] <command>
         or: perf script [<options>] <top-script> [script-args]
    
         -f, --fields <str>    comma separated output fields prepend with
         'type:'. Valid types: hw,sw,trace,raw. Fields:
         comm,tid,pid,time,cpu,event,trace,ip,sym,dso,addr,symoff,period
    
    As shown above, the -f option does not work at all. And -f is already
    taken up by --fields, which makes --force confused, so change the short
    option name of --fields to -F like what other perf commands do (e.g.
    perf report -F) and use -f as the short option name of --force.
    
    After this patch:
    
     # perf script
     File perf.data not owned by current user or root (use -f to override)
     # perf script -f
     :41298 41298 2590086.564226:          1 cycles:  ffffffff8103efc6
     native_write_msr_safe ([kernel.kallsyms])
     :41298 41298 2590086.564244:          1 cycles:  ffffffff8103efc6
     native_write_msr_safe ([kernel.kallsyms])
     :41298 41298 2590086.564249:          7 cycles:  ffffffff8103efc6
     native_write_msr_safe ([kernel.kallsyms])
     :41298 41298 2590086.564255:        176 cycles:  ffffffff8103efc6
     native_write_msr_safe ([kernel.kallsyms])
         ls 41298 2590086.567346:       4059 cycles:  ffffffff8105a592
         raise_softirq ([kernel.kallsyms])
         ls 41298 2590086.567353:       3717 cycles:  ffffffff8105a592
         raise_softirq ([kernel.kallsyms])
         ls 41298 2590086.567358:      63058 cycles:  ffffffff8105a592
         raise_softirq ([kernel.kallsyms])
         ls 41298 2590086.567448:    1706255 cycles:            406ae0
         [unknown] (/usr/bin/ls)
    
    As shown above, the -f option really works now.
    Signed-off-by: NYunlong Song <yunlong.song@huawei.com>
    Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1427982439-27388-8-git-send-email-yunlong.song@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    06af0f2c
builtin-script.c 44.0 KB