Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
a12b51c4 PM |
2 | #ifndef __PERF_CPUMAP_H |
3 | #define __PERF_CPUMAP_H | |
4 | ||
9ae7d335 | 5 | #include <stdio.h> |
a14bb7a6 | 6 | #include <stdbool.h> |
959b83c7 | 7 | #include <internal/cpumap.h> |
397721e0 | 8 | #include <perf/cpumap.h> |
9ae7d335 | 9 | |
72932371 | 10 | struct perf_record_cpu_map_data; |
7780c25b | 11 | |
315c0a1f | 12 | struct perf_cpu_map *perf_cpu_map__empty_new(int nr); |
72932371 | 13 | struct perf_cpu_map *cpu_map__new_data(struct perf_record_cpu_map_data *data); |
f854839b JO |
14 | size_t cpu_map__snprint(struct perf_cpu_map *map, char *buf, size_t size); |
15 | size_t cpu_map__snprint_mask(struct perf_cpu_map *map, char *buf, size_t size); | |
16 | size_t cpu_map__fprintf(struct perf_cpu_map *map, FILE *fp); | |
193b6bd3 | 17 | int cpu_map__get_socket_id(int cpu); |
f854839b | 18 | int cpu_map__get_socket(struct perf_cpu_map *map, int idx, void *data); |
b74d8686 | 19 | int cpu_map__get_die_id(int cpu); |
f854839b | 20 | int cpu_map__get_die(struct perf_cpu_map *map, int idx, void *data); |
193b6bd3 | 21 | int cpu_map__get_core_id(int cpu); |
f854839b | 22 | int cpu_map__get_core(struct perf_cpu_map *map, int idx, void *data); |
86895b48 JO |
23 | int cpu_map__get_node_id(int cpu); |
24 | int cpu_map__get_node(struct perf_cpu_map *map, int idx, void *data); | |
f854839b JO |
25 | int cpu_map__build_socket_map(struct perf_cpu_map *cpus, struct perf_cpu_map **sockp); |
26 | int cpu_map__build_die_map(struct perf_cpu_map *cpus, struct perf_cpu_map **diep); | |
27 | int cpu_map__build_core_map(struct perf_cpu_map *cpus, struct perf_cpu_map **corep); | |
86895b48 | 28 | int cpu_map__build_node_map(struct perf_cpu_map *cpus, struct perf_cpu_map **nodep); |
f854839b | 29 | const struct perf_cpu_map *cpu_map__online(void); /* thread unsafe */ |
5ac59a8a | 30 | |
f854839b | 31 | static inline int cpu_map__socket(struct perf_cpu_map *sock, int s) |
5ac59a8a SE |
32 | { |
33 | if (!sock || s > sock->nr || s < 0) | |
34 | return 0; | |
35 | return sock->map[s]; | |
36 | } | |
9ae7d335 | 37 | |
12c08a9f SE |
38 | static inline int cpu_map__id_to_socket(int id) |
39 | { | |
db5742b6 KL |
40 | return id >> 24; |
41 | } | |
42 | ||
43 | static inline int cpu_map__id_to_die(int id) | |
44 | { | |
45 | return (id >> 16) & 0xff; | |
12c08a9f SE |
46 | } |
47 | ||
48 | static inline int cpu_map__id_to_cpu(int id) | |
49 | { | |
50 | return id & 0xffff; | |
51 | } | |
52 | ||
7780c25b DZ |
53 | int cpu__setup_cpunode_map(void); |
54 | ||
5ac76283 ACM |
55 | int cpu__max_node(void); |
56 | int cpu__max_cpu(void); | |
92a7e127 | 57 | int cpu__max_present_cpu(void); |
5ac76283 | 58 | int cpu__get_node(int cpu); |
7780c25b | 59 | |
f854839b JO |
60 | int 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), | |
1fe7a300 | 62 | void *data); |
e632aa69 | 63 | |
f854839b JO |
64 | int cpu_map__cpu(struct perf_cpu_map *cpus, int idx); |
65 | bool cpu_map__has(struct perf_cpu_map *cpus, int cpu); | |
a8cbe40f | 66 | |
a12b51c4 | 67 | #endif /* __PERF_CPUMAP_H */ |