1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __ARCH_X86_EVENTS_PROBE_H__
3 #define __ARCH_X86_EVENTS_PROBE_H__
4 #include <linux/sysfs.h>
5 
6 struct perf_msr {
7 	u64			  msr;
8 	struct attribute_group	 *grp;
9 	bool			(*test)(int idx, void *data);
10 	bool			  no_check;
11 };
12 
13 unsigned long
14 perf_msr_probe(struct perf_msr *msr, int cnt, bool no_zero, void *data);
15 
16 #define __PMU_EVENT_GROUP(_name)			\
17 static struct attribute *attrs_##_name[] = {		\
18 	&attr_##_name.attr.attr,			\
19 	NULL,						\
20 }
21 
22 #define PMU_EVENT_GROUP(_grp, _name)			\
23 __PMU_EVENT_GROUP(_name);				\
24 static struct attribute_group group_##_name = {		\
25 	.name  = #_grp,					\
26 	.attrs = attrs_##_name,				\
27 }
28 
29 #endif /* __ARCH_X86_EVENTS_PROBE_H__ */
30