[PATCH v2 3/6] perf cpumap: Add is_subset function
Arnaldo Carvalho de Melo
acme at kernel.org
Wed Mar 30 13:34:02 PDT 2022
Em Mon, Mar 28, 2022 at 04:26:45PM -0700, Ian Rogers escreveu:
> Returns true if the second argument is a subset of the first.
Thanks, applied.
- Arnaldo
> Signed-off-by: Ian Rogers <irogers at google.com>
> ---
> tools/lib/perf/cpumap.c | 20 ++++++++++++++++++++
> tools/lib/perf/include/internal/cpumap.h | 1 +
> 2 files changed, 21 insertions(+)
>
> diff --git a/tools/lib/perf/cpumap.c b/tools/lib/perf/cpumap.c
> index ee66760f1e63..23701024e0c0 100644
> --- a/tools/lib/perf/cpumap.c
> +++ b/tools/lib/perf/cpumap.c
> @@ -319,6 +319,26 @@ struct perf_cpu perf_cpu_map__max(struct perf_cpu_map *map)
> return map->nr > 0 ? map->map[map->nr - 1] : result;
> }
>
> +/** Is 'b' a subset of 'a'. */
> +bool perf_cpu_map__is_subset(const struct perf_cpu_map *a, const struct perf_cpu_map *b)
> +{
> + if (a == b || !b)
> + return true;
> + if (!a || b->nr > a->nr)
> + return false;
> +
> + for (int i = 0, j = 0; i < a->nr; i++) {
> + if (a->map[i].cpu > b->map[j].cpu)
> + return false;
> + if (a->map[i].cpu == b->map[j].cpu) {
> + j++;
> + if (j == b->nr)
> + return true;
> + }
> + }
> + return false;
> +}
> +
> /*
> * Merge two cpumaps
> *
> diff --git a/tools/lib/perf/include/internal/cpumap.h b/tools/lib/perf/include/internal/cpumap.h
> index 1973a18c096b..35dd29642296 100644
> --- a/tools/lib/perf/include/internal/cpumap.h
> +++ b/tools/lib/perf/include/internal/cpumap.h
> @@ -25,5 +25,6 @@ struct perf_cpu_map {
> #endif
>
> int perf_cpu_map__idx(const struct perf_cpu_map *cpus, struct perf_cpu cpu);
> +bool perf_cpu_map__is_subset(const struct perf_cpu_map *a, const struct perf_cpu_map *b);
>
> #endif /* __LIBPERF_INTERNAL_CPUMAP_H */
> --
> 2.35.1.1021.g381101b075-goog
--
- Arnaldo
More information about the linux-arm-kernel
mailing list