Re: [PATCH] perf inject: Make --strip keep evsels

From: Jiri Olsa
Date: Wed Nov 06 2019 - 06:04:01 EST


On Tue, Nov 05, 2019 at 12:00:57PM +0200, Adrian Hunter wrote:
> create_gcov (refer to the autofdo example in
> tools/perf/Documentation/intel-pt.txt) now needs the evsels to read the
> perf.data file. So don't strip them.
>
> Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
> ---
> tools/perf/builtin-inject.c | 54 -------------------------------------
> 1 file changed, 54 deletions(-)

good stats ;-)

Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>

thanks,
jirka

>
> diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
> index 372ecb3e2c06..1e5d28311e14 100644
> --- a/tools/perf/builtin-inject.c
> +++ b/tools/perf/builtin-inject.c
> @@ -578,58 +578,6 @@ static void strip_init(struct perf_inject *inject)
> evsel->handler = drop_sample;
> }
>
> -static bool has_tracking(struct evsel *evsel)
> -{
> - return evsel->core.attr.mmap || evsel->core.attr.mmap2 || evsel->core.attr.comm ||
> - evsel->core.attr.task;
> -}
> -
> -#define COMPAT_MASK (PERF_SAMPLE_ID | PERF_SAMPLE_TID | PERF_SAMPLE_TIME | \
> - PERF_SAMPLE_ID | PERF_SAMPLE_CPU | PERF_SAMPLE_IDENTIFIER)
> -
> -/*
> - * In order that the perf.data file is parsable, tracking events like MMAP need
> - * their selected event to exist, except if there is only 1 selected event left
> - * and it has a compatible sample type.
> - */
> -static bool ok_to_remove(struct evlist *evlist,
> - struct evsel *evsel_to_remove)
> -{
> - struct evsel *evsel;
> - int cnt = 0;
> - bool ok = false;
> -
> - if (!has_tracking(evsel_to_remove))
> - return true;
> -
> - evlist__for_each_entry(evlist, evsel) {
> - if (evsel->handler != drop_sample) {
> - cnt += 1;
> - if ((evsel->core.attr.sample_type & COMPAT_MASK) ==
> - (evsel_to_remove->core.attr.sample_type & COMPAT_MASK))
> - ok = true;
> - }
> - }
> -
> - return ok && cnt == 1;
> -}
> -
> -static void strip_fini(struct perf_inject *inject)
> -{
> - struct evlist *evlist = inject->session->evlist;
> - struct evsel *evsel, *tmp;
> -
> - /* Remove non-synthesized evsels if possible */
> - evlist__for_each_entry_safe(evlist, tmp, evsel) {
> - if (evsel->handler == drop_sample &&
> - ok_to_remove(evlist, evsel)) {
> - pr_debug("Deleting %s\n", perf_evsel__name(evsel));
> - evlist__remove(evlist, evsel);
> - evsel__delete(evsel);
> - }
> - }
> -}
> -
> static int __cmd_inject(struct perf_inject *inject)
> {
> int ret = -EINVAL;
> @@ -729,8 +677,6 @@ static int __cmd_inject(struct perf_inject *inject)
> evlist__remove(session->evlist, evsel);
> evsel__delete(evsel);
> }
> - if (inject->strip)
> - strip_fini(inject);
> }
> session->header.data_offset = output_data_offset;
> session->header.data_size = inject->bytes_written;
> --
> 2.17.1
>