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@xxxxxxxxxx> > --- > 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