Em Wed, Sep 19, 2018 at 02:23:33PM +0300, Adrian Hunter escreveu:
> Allow for different combinations of sample flags with "trace begin" or
> "trace end".

Please describe how you would use this with some command and its output.

- Arnaldo
 
> Signed-off-by: Adrian Hunter <[email protected]>
> ---
>  tools/perf/builtin-script.c | 36 +++++++++++++++++++++++++++---------
>  1 file changed, 27 insertions(+), 9 deletions(-)
> 
> diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
> index 6176bae177c2..4982380ba96d 100644
> --- a/tools/perf/builtin-script.c
> +++ b/tools/perf/builtin-script.c
> @@ -1255,6 +1255,18 @@ static struct {
>       {0, NULL}
>  };
>  
> +static const char *sample_flags_to_name(u32 flags)
> +{
> +     int i;
> +
> +     for (i = 0; sample_flags[i].name ; i++) {
> +             if (sample_flags[i].flags == flags)
> +                     return sample_flags[i].name;
> +     }
> +
> +     return NULL;
> +}
> +
>  static int perf_sample__fprintf_flags(u32 flags, FILE *fp)
>  {
>       const char *chars = PERF_IP_FLAG_CHARS;
> @@ -1264,11 +1276,20 @@ static int perf_sample__fprintf_flags(u32 flags, FILE 
> *fp)
>       char str[33];
>       int i, pos = 0;
>  
> -     for (i = 0; sample_flags[i].name ; i++) {
> -             if (sample_flags[i].flags == (flags & ~PERF_IP_FLAG_IN_TX)) {
> -                     name = sample_flags[i].name;
> -                     break;
> -             }
> +     name = sample_flags_to_name(flags & ~PERF_IP_FLAG_IN_TX);
> +     if (name)
> +             return fprintf(fp, "  %-15s%4s ", name, in_tx ? "(x)" : "");
> +
> +     if (flags & PERF_IP_FLAG_TRACE_BEGIN) {
> +             name = sample_flags_to_name(flags & ~(PERF_IP_FLAG_IN_TX | 
> PERF_IP_FLAG_TRACE_BEGIN));
> +             if (name)
> +                     return fprintf(fp, "  tr strt %-7s%4s ", name, in_tx ? 
> "(x)" : "");
> +     }
> +
> +     if (flags & PERF_IP_FLAG_TRACE_END) {
> +             name = sample_flags_to_name(flags & ~(PERF_IP_FLAG_IN_TX | 
> PERF_IP_FLAG_TRACE_END));
> +             if (name)
> +                     return fprintf(fp, "  tr end  %-7s%4s ", name, in_tx ? 
> "(x)" : "");
>       }
>  
>       for (i = 0; i < n; i++, flags >>= 1) {
> @@ -1281,10 +1302,7 @@ static int perf_sample__fprintf_flags(u32 flags, FILE 
> *fp)
>       }
>       str[pos] = 0;
>  
> -     if (name)
> -             return fprintf(fp, "  %-7s%4s ", name, in_tx ? "(x)" : "");
> -
> -     return fprintf(fp, "  %-11s ", str);
> +     return fprintf(fp, "  %-19s ", str);
>  }
>  
>  struct printer_data {
> -- 
> 2.17.1

Reply via email to