• T
    perf trace: live-mode command-line cleanup · b5b87312
    Tom Zanussi 提交于
    This patch attempts to make the perf trace command-line for live-mode
    commands more user-friendly and consistent with other perf commands.
    
    The main change it makes is to allow <commands> to be run as part of
    perf trace live-mode commands, as other perf commands do, instead of
    the system-wide traces they're currently hard-coded to by the shell
    scripts.
    
    With this patch, the following live-mode trace now works as expected:
    
     $ perf trace rw-by-pid ls -al
    
    The previous system-wide behavior for this command would still be
    available by explicitly specifying -a:
    
     $ perf trace rw-by-pid -a ls -al
    
    and if no <command> is specified, the output is also system-wide:
    
     $ perf trace rw-by-pid
    
    Because live-mode requires both record and report steps to be invoked,
    it isn't always possible to know which args to send to the report and
    which to send to the record steps - mainly this is the case for report
    scripts with optional args - in those cases it would be necessary to
    use separate 'perf trace record' and 'perf trace report' steps.
    
    For example:
    
     $ perf trace syscall-counts ls
    
    Here we can't decide whether ls should be passed as a param to the
    syscall-counts script or whether we should invoke ls as a <command>.
    In these cases, we just say that we'll ignore optional script params
    and always interpret the extra arguments as a <command>.
    
    If the user instead wants the other interpretation, that can be
    accomplished by using separate record and report commands explicitly:
    
     $ perf trace record syscall-counts
     $ perf trace report syscall-counts ls
    
    So the rules that this patch implements, which seem to make the most
    intuitive sense for live-mode commands:
    
    - for commands with optional args and commands with no args, no args
      are sent to the report script, all are sent to the record step
    
    - for 'top' commands i.e. that end with 'top', <commands> can't be
      used - all extra args are send to the report script as params
    
    - for commands with required args, the n required args are taken to be
      the first n args after the script name and sent to the report
      script, and the rest are sent to the record step
    Signed-off-by: NTom Zanussi <tom.zanussi@linux.intel.com>
    Acked-by: NArnaldo Carvalho de Melo <acme@ghostprotocols.net>
    b5b87312
builtin-trace.c 17.4 KB