1 /* SPDX-License-Identifier: GPL-2.0 */
15 * enum metric_event_groups - How events within a pmu_metric should be grouped.
17 enum metric_event_groups {
19 * @MetricGroupEvents: Default, group events within the metric.
21 MetricGroupEvents = 0,
23 * @MetricNoGroupEvents: Don't group events for the metric.
25 MetricNoGroupEvents = 1,
27 * @MetricNoGroupEventsNmi: Don't group events for the metric if the NMI
28 * watchdog is enabled.
30 MetricNoGroupEventsNmi = 2,
32 * @MetricNoGroupEventsSmt: Don't group events for the metric if SMT is
35 MetricNoGroupEventsSmt = 3,
38 * Describe each PMU event. Each CPU has a table of PMU events.
46 const char *long_desc;
54 const char *metric_name;
55 const char *metric_group;
56 const char *metric_expr;
57 const char *metric_threshold;
61 const char *long_desc;
62 const char *metricgroup_no_group;
63 enum aggr_mode_class aggr_mode;
64 enum metric_event_groups event_grouping;
67 struct pmu_events_table;
68 struct pmu_metrics_table;
70 typedef int (*pmu_event_iter_fn)(const struct pmu_event *pe,
71 const struct pmu_events_table *table,
74 typedef int (*pmu_metric_iter_fn)(const struct pmu_metric *pm,
75 const struct pmu_metrics_table *table,
78 int pmu_events_table_for_each_event(const struct pmu_events_table *table, pmu_event_iter_fn fn,
80 int pmu_metrics_table_for_each_metric(const struct pmu_metrics_table *table, pmu_metric_iter_fn fn,
83 const struct pmu_events_table *perf_pmu__find_events_table(struct perf_pmu *pmu);
84 const struct pmu_metrics_table *perf_pmu__find_metrics_table(struct perf_pmu *pmu);
85 const struct pmu_events_table *find_core_events_table(const char *arch, const char *cpuid);
86 const struct pmu_metrics_table *find_core_metrics_table(const char *arch, const char *cpuid);
87 int pmu_for_each_core_event(pmu_event_iter_fn fn, void *data);
88 int pmu_for_each_core_metric(pmu_metric_iter_fn fn, void *data);
90 const struct pmu_events_table *find_sys_events_table(const char *name);
91 const struct pmu_metrics_table *find_sys_metrics_table(const char *name);
92 int pmu_for_each_sys_event(pmu_event_iter_fn fn, void *data);
93 int pmu_for_each_sys_metric(pmu_metric_iter_fn fn, void *data);