1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef __PERF_CPUMAP_H 3#define __PERF_CPUMAP_H 4 5#include <stdio.h> 6#include <stdbool.h> 7#include <internal/cpumap.h> 8#include <perf/cpumap.h> 9 10struct perf_record_cpu_map_data; 11 12struct perf_cpu_map *perf_cpu_map__empty_new(int nr); 13struct perf_cpu_map *cpu_map__new_data(struct perf_record_cpu_map_data *data); 14size_t cpu_map__snprint(struct perf_cpu_map *map, char *buf, size_t size); 15size_t cpu_map__snprint_mask(struct perf_cpu_map *map, char *buf, size_t size); 16size_t cpu_map__fprintf(struct perf_cpu_map *map, FILE *fp); 17int cpu_map__get_socket_id(int cpu); 18int cpu_map__get_socket(struct perf_cpu_map *map, int idx, void *data); 19int cpu_map__get_die_id(int cpu); 20int cpu_map__get_die(struct perf_cpu_map *map, int idx, void *data); 21int cpu_map__get_core_id(int cpu); 22int cpu_map__get_core(struct perf_cpu_map *map, int idx, void *data); 23int cpu_map__get_node_id(int cpu); 24int cpu_map__get_node(struct perf_cpu_map *map, int idx, void *data); 25int cpu_map__build_socket_map(struct perf_cpu_map *cpus, struct perf_cpu_map **sockp); 26int cpu_map__build_die_map(struct perf_cpu_map *cpus, struct perf_cpu_map **diep); 27int cpu_map__build_core_map(struct perf_cpu_map *cpus, struct perf_cpu_map **corep); 28int cpu_map__build_node_map(struct perf_cpu_map *cpus, struct perf_cpu_map **nodep); 29const struct perf_cpu_map *cpu_map__online(void); /* thread unsafe */ 30 31static inline int cpu_map__socket(struct perf_cpu_map *sock, int s) 32{ 33 if (!sock || s > sock->nr || s < 0) 34 return 0; 35 return sock->map[s]; 36} 37 38static inline int cpu_map__id_to_socket(int id) 39{ 40 return id >> 24; 41} 42 43static inline int cpu_map__id_to_die(int id) 44{ 45 return (id >> 16) & 0xff; 46} 47 48static inline int cpu_map__id_to_cpu(int id) 49{ 50 return id & 0xffff; 51} 52 53int cpu__setup_cpunode_map(void); 54 55int cpu__max_node(void); 56int cpu__max_cpu(void); 57int cpu__max_present_cpu(void); 58int cpu__get_node(int cpu); 59 60int cpu_map__build_map(struct perf_cpu_map *cpus, struct perf_cpu_map **res, 61 int (*f)(struct perf_cpu_map *map, int cpu, void *data), 62 void *data); 63 64int cpu_map__cpu(struct perf_cpu_map *cpus, int idx); 65bool cpu_map__has(struct perf_cpu_map *cpus, int cpu); 66 67#endif /* __PERF_CPUMAP_H */ 68