Em Fri, Sep 25, 2015 at 04:15:32PM +0300, Adrian Hunter escreveu:
> Instruction tracing options (i.e. --itrace) include an option for
> sampling instructions at an arbitrary period. e.g.
> 
>       --itrace=i10us
> 
> means make an 'instructions' sample for every 10us of trace.
> 
> Currently the logic does not distinguish between a period of
> zero and no period being specified at all, so it gets treated
> as the default period which is 100000.  That doesn't really
> make sense.
> 
> Fix it so that zero period is accepted and treated as meaning
> "as often as possible".

Don't we have to update the documentation for this?
 
> In the case of Intel PT that is the same as a period of 1 and
> a unit of 'instructions' (i.e. --itrace=i1i).
> 
> Signed-off-by: Adrian Hunter <[email protected]>
> ---
>  tools/perf/util/auxtrace.c | 4 +++-
>  tools/perf/util/intel-pt.c | 2 +-
>  2 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c
> index a980e7c50ee0..c4993b2e6c50 100644
> --- a/tools/perf/util/auxtrace.c
> +++ b/tools/perf/util/auxtrace.c
> @@ -950,6 +950,7 @@ int itrace_parse_synth_opts(const struct option *opt, 
> const char *str,
>       const char *p;
>       char *endptr;
>       bool period_type_set = false;
> +     bool period_set = false;
>  
>       synth_opts->set = true;
>  
> @@ -971,6 +972,7 @@ int itrace_parse_synth_opts(const struct option *opt, 
> const char *str,
>                               p += 1;
>                       if (isdigit(*p)) {
>                               synth_opts->period = strtoull(p, &endptr, 10);
> +                             period_set = true;
>                               p = endptr;
>                               while (*p == ' ' || *p == ',')
>                                       p += 1;
> @@ -1053,7 +1055,7 @@ out:
>               if (!period_type_set)
>                       synth_opts->period_type =
>                                       PERF_ITRACE_DEFAULT_PERIOD_TYPE;
> -             if (!synth_opts->period)
> +             if (!period_set)
>                       synth_opts->period = PERF_ITRACE_DEFAULT_PERIOD;
>       }
>  
> diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c
> index 38942e1eac8f..c8bb5ca6a157 100644
> --- a/tools/perf/util/intel-pt.c
> +++ b/tools/perf/util/intel-pt.c
> @@ -720,7 +720,7 @@ static struct intel_pt_queue *intel_pt_alloc_queue(struct 
> intel_pt *pt,
>  
>               if (!params.period) {
>                       params.period_type = INTEL_PT_PERIOD_INSTRUCTIONS;
> -                     params.period = 1000;
> +                     params.period = 1;
>               }
>       }
>  
> -- 
> 1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to