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 	u64			mask;
12 };
13 
14 unsigned long
15 perf_msr_probe(struct perf_msr *msr, int cnt, bool no_zero, void *data);
16 
17 #define __PMU_EVENT_GROUP(_name)			\
18 static struct attribute *attrs_##_name[] = {		\
19 	&attr_##_name.attr.attr,			\
20 	NULL,						\
21 }
22 
23 #define PMU_EVENT_GROUP(_grp, _name)			\
24 __PMU_EVENT_GROUP(_name);				\
25 static struct attribute_group group_##_name = {		\
26 	.name  = #_grp,					\
27 	.attrs = attrs_##_name,				\
28 }
29 
30 #endif /* __ARCH_X86_EVENTS_PROBE_H__ */
31