| 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 |  | 
|---|