162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci#include <stdarg.h>
362306a36Sopenharmony_ci#include <stdio.h>
462306a36Sopenharmony_ci#include <perf/cpumap.h>
562306a36Sopenharmony_ci#include <internal/tests.h>
662306a36Sopenharmony_ci#include "tests.h"
762306a36Sopenharmony_ci
862306a36Sopenharmony_cistatic int libperf_print(enum libperf_print_level level,
962306a36Sopenharmony_ci			 const char *fmt, va_list ap)
1062306a36Sopenharmony_ci{
1162306a36Sopenharmony_ci	return vfprintf(stderr, fmt, ap);
1262306a36Sopenharmony_ci}
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciint test_cpumap(int argc, char **argv)
1562306a36Sopenharmony_ci{
1662306a36Sopenharmony_ci	struct perf_cpu_map *cpus;
1762306a36Sopenharmony_ci	struct perf_cpu cpu;
1862306a36Sopenharmony_ci	int idx;
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci	__T_START;
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	libperf_init(libperf_print);
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	cpus = perf_cpu_map__dummy_new();
2562306a36Sopenharmony_ci	if (!cpus)
2662306a36Sopenharmony_ci		return -1;
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	perf_cpu_map__get(cpus);
2962306a36Sopenharmony_ci	perf_cpu_map__put(cpus);
3062306a36Sopenharmony_ci	perf_cpu_map__put(cpus);
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci	cpus = perf_cpu_map__default_new();
3362306a36Sopenharmony_ci	if (!cpus)
3462306a36Sopenharmony_ci		return -1;
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci	perf_cpu_map__for_each_cpu(cpu, idx, cpus)
3762306a36Sopenharmony_ci		__T("wrong cpu number", cpu.cpu != -1);
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci	perf_cpu_map__put(cpus);
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci	__T_END;
4262306a36Sopenharmony_ci	return tests_failed == 0 ? 0 : -1;
4362306a36Sopenharmony_ci}
44