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/

