xref: /linux/tools/perf/util/pmus.h (revision f4f346c3465949ebba80c6cc52cd8d2eeaa545fd)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __PMUS_H
3 #define __PMUS_H
4 
5 #include <stdbool.h>
6 #include <stddef.h>
7 
8 struct perf_event_attr;
9 struct perf_pmu;
10 struct print_callbacks;
11 
12 size_t pmu_name_len_no_suffix(const char *str);
13 /* Exposed for testing only. */
14 int pmu_name_cmp(const char *lhs_pmu_name, const char *rhs_pmu_name);
15 
16 void perf_pmus__destroy(void);
17 
18 struct perf_pmu *perf_pmus__find(const char *name);
19 struct perf_pmu *perf_pmus__find_by_type(unsigned int type);
20 struct perf_pmu *perf_pmus__find_by_attr(const struct perf_event_attr *attr);
21 
22 struct perf_pmu *perf_pmus__scan(struct perf_pmu *pmu);
23 struct perf_pmu *perf_pmus__scan_core(struct perf_pmu *pmu);
24 struct perf_pmu *perf_pmus__scan_for_event(struct perf_pmu *pmu, const char *event);
25 struct perf_pmu *perf_pmus__scan_matching_wildcard(struct perf_pmu *pmu, const char *wildcard);
26 
27 const struct perf_pmu *perf_pmus__pmu_for_pmu_filter(const char *str);
28 
29 void perf_pmus__print_pmu_events(const struct print_callbacks *print_cb, void *print_state);
30 void perf_pmus__print_raw_pmu_events(const struct print_callbacks *print_cb, void *print_state);
31 bool perf_pmus__have_event(const char *pname, const char *name);
32 int perf_pmus__num_core_pmus(void);
33 bool perf_pmus__supports_extended_type(void);
34 
35 struct perf_pmu *perf_pmus__add_test_pmu(int test_sysfs_dirfd, const char *name);
36 struct perf_pmu *perf_pmus__add_test_hwmon_pmu(const char *hwmon_dir,
37 					       const char *sysfs_name,
38 					       const char *name);
39 struct perf_pmu *perf_pmus__fake_pmu(void);
40 struct perf_pmu *perf_pmus__find_core_pmu(void);
41 
42 #endif /* __PMUS_H */
43