Re: [PATCH v2 1/3] perf diff: Support --time filter option

Jiri Olsa
2019-02-27T09:28:20Z

On Tue, Feb 26, 2019 at 08:11:07PM +0800, Jin Yao wrote:

SNIP

> + .ordered_events = true,
> + .ordering_requires_timestamps = true,
> + },
> };
>
> static struct perf_evsel *evsel_match(struct perf_evsel *evsel,
> @@ -771,19 +788,136 @@ static void data__free(struct data__file *d)
> }
> }
>
> +static int parse_time_range(struct data__file *d,
> + struct perf_time_interval *ptime_range,
> + const char *time_str)
> +{
> + if (perf_time__parse_str(ptime_range,
> + time_str) != 0) {
> + if (d->session->evlist->first_sample_time == 0 &&
> + d->session->evlist->last_sample_time == 0) {
> + pr_err("HINT: no first/last sample time found in perf data.\n"
> + "Please use latest perf binary to execute 'perf record'\n"
> + "(if '--buildid-all' is enabled, please set '--timestamp-boundary').\n");
> + return -EINVAL;
> + }
> +
> + pdiff.range_num = perf_time__percent_parse_str(
> + ptime_range, pdiff.range_size, time_str,
> + d->session->evlist->first_sample_time,
> + d->session->evlist->last_sample_time);
> +
> + if (pdiff.range_num < 0) {
> + pr_err("Invalid time string\n");
> + return -EINVAL;
> + }
> + } else {
> + pdiff.range_num = 1;

I dont understand why we set range_num to 1 if there's
not time option set.. it should be 0 and we should take
no action in diff__process_sample_event, right?

then I checked the report code and we do the same,
could we fix that? I'm assuming we don't need any
time check if the time option is not set.. please
correct me if I miss something

jirka