]> Git Repo - linux.git/commitdiff
perf cpumap: Add is_subset function
authorIan Rogers <[email protected]>
Mon, 28 Mar 2022 23:26:45 +0000 (16:26 -0700)
committerArnaldo Carvalho de Melo <[email protected]>
Fri, 1 Apr 2022 19:19:35 +0000 (16:19 -0300)
Returns true if the second argument is a subset of the first.

Signed-off-by: Ian Rogers <[email protected]>
Cc: Adrian Hunter <[email protected]>
Cc: Alexander Antonov <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: Alexei Starovoitov <[email protected]>
Cc: Alexey Bayduraev <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Andrii Nakryiko <[email protected]>
Cc: Daniel Borkmann <[email protected]>
Cc: German Gomez <[email protected]>
Cc: James Clark <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: John Fastabend <[email protected]>
Cc: John Garry <[email protected]>
Cc: KP Singh <[email protected]>
Cc: Kajol Jain <[email protected]>
Cc: Leo Yan <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: Martin KaFai Lau <[email protected]>
Cc: Mathieu Poirier <[email protected]>
Cc: Mike Leach <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Riccardo Mancini <[email protected]>
Cc: Song Liu <[email protected]>
Cc: Stephane Eranian <[email protected]>
Cc: Suzuki Poulouse <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Yonghong Song <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Link: http://lore.kernel.org/lkml/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
tools/lib/perf/cpumap.c
tools/lib/perf/include/internal/cpumap.h

index ee66760f1e63c70854a0a3a8033624a19b3d0825..23701024e0c0ebe171af7469c9c2266da13ede13 100644 (file)
@@ -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
  *
index 1973a18c096b079e8685288344b54f99a554000a..35dd29642296e6602a9702257cf05c55d4093c82 100644 (file)
@@ -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 */
This page took 0.055779 seconds and 4 git commands to generate.