1 #ifndef __PERF_CPUMAP_H 2 #define __PERF_CPUMAP_H 3 4 #include <stdio.h> 5 #include <stdbool.h> 6 7 struct cpu_map { 8 int nr; 9 int map[]; 10 }; 11 12 struct cpu_map *cpu_map__new(const char *cpu_list); 13 struct cpu_map *cpu_map__dummy_new(void); 14 void cpu_map__delete(struct cpu_map *map); 15 struct cpu_map *cpu_map__read(FILE *file); 16 size_t cpu_map__fprintf(struct cpu_map *map, FILE *fp); 17 int cpu_map__get_socket(struct cpu_map *map, int idx); 18 int cpu_map__build_socket_map(struct cpu_map *cpus, struct cpu_map **sockp); 19 20 static inline int cpu_map__socket(struct cpu_map *sock, int s) 21 { 22 if (!sock || s > sock->nr || s < 0) 23 return 0; 24 return sock->map[s]; 25 } 26 27 static inline int cpu_map__nr(const struct cpu_map *map) 28 { 29 return map ? map->nr : 1; 30 } 31 32 static inline bool cpu_map__all(const struct cpu_map *map) 33 { 34 return map ? map->map[0] == -1 : true; 35 } 36 37 #endif /* __PERF_CPUMAP_H */ 38