[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