1a12b51c4SPaul Mackerras #ifndef __PERF_CPUMAP_H 2a12b51c4SPaul Mackerras #define __PERF_CPUMAP_H 3a12b51c4SPaul Mackerras 49ae7d335SArnaldo Carvalho de Melo #include <stdio.h> 5a14bb7a6SArnaldo Carvalho de Melo #include <stdbool.h> 69ae7d335SArnaldo Carvalho de Melo 760d567e2SArnaldo Carvalho de Melo struct cpu_map { 860d567e2SArnaldo Carvalho de Melo int nr; 960d567e2SArnaldo Carvalho de Melo int map[]; 1060d567e2SArnaldo Carvalho de Melo }; 1160d567e2SArnaldo Carvalho de Melo 1260d567e2SArnaldo Carvalho de Melo struct cpu_map *cpu_map__new(const char *cpu_list); 1360d567e2SArnaldo Carvalho de Melo struct cpu_map *cpu_map__dummy_new(void); 14915fce20SArnaldo Carvalho de Melo void cpu_map__delete(struct cpu_map *map); 157ae92e74SYan, Zheng struct cpu_map *cpu_map__read(FILE *file); 169ae7d335SArnaldo Carvalho de Melo size_t cpu_map__fprintf(struct cpu_map *map, FILE *fp); 175ac59a8aSStephane Eranian int cpu_map__get_socket(struct cpu_map *map, int idx); 1812c08a9fSStephane Eranian int cpu_map__get_core(struct cpu_map *map, int idx); 195ac59a8aSStephane Eranian int cpu_map__build_socket_map(struct cpu_map *cpus, struct cpu_map **sockp); 2012c08a9fSStephane Eranian int cpu_map__build_core_map(struct cpu_map *cpus, struct cpu_map **corep); 215ac59a8aSStephane Eranian 225ac59a8aSStephane Eranian static inline int cpu_map__socket(struct cpu_map *sock, int s) 235ac59a8aSStephane Eranian { 245ac59a8aSStephane Eranian if (!sock || s > sock->nr || s < 0) 255ac59a8aSStephane Eranian return 0; 265ac59a8aSStephane Eranian return sock->map[s]; 275ac59a8aSStephane Eranian } 289ae7d335SArnaldo Carvalho de Melo 2912c08a9fSStephane Eranian static inline int cpu_map__id_to_socket(int id) 3012c08a9fSStephane Eranian { 3112c08a9fSStephane Eranian return id >> 16; 3212c08a9fSStephane Eranian } 3312c08a9fSStephane Eranian 3412c08a9fSStephane Eranian static inline int cpu_map__id_to_cpu(int id) 3512c08a9fSStephane Eranian { 3612c08a9fSStephane Eranian return id & 0xffff; 3712c08a9fSStephane Eranian } 3812c08a9fSStephane Eranian 39a14bb7a6SArnaldo Carvalho de Melo static inline int cpu_map__nr(const struct cpu_map *map) 40a14bb7a6SArnaldo Carvalho de Melo { 41a14bb7a6SArnaldo Carvalho de Melo return map ? map->nr : 1; 42a14bb7a6SArnaldo Carvalho de Melo } 43a14bb7a6SArnaldo Carvalho de Melo 44a14bb7a6SArnaldo Carvalho de Melo static inline bool cpu_map__all(const struct cpu_map *map) 45a14bb7a6SArnaldo Carvalho de Melo { 46a14bb7a6SArnaldo Carvalho de Melo return map ? map->map[0] == -1 : true; 47a14bb7a6SArnaldo Carvalho de Melo } 48a14bb7a6SArnaldo Carvalho de Melo 49a12b51c4SPaul Mackerras #endif /* __PERF_CPUMAP_H */ 50