root/arch/x86/events/probe.h
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ARCH_X86_EVENTS_PROBE_H__
#define __ARCH_X86_EVENTS_PROBE_H__
#include <linux/sysfs.h>

struct perf_msr {
        u64                     msr;
        struct attribute_group  *grp;
        bool                    (*test)(int idx, void *data);
        bool                    no_check;
        u64                     mask;
};

unsigned long
perf_msr_probe(struct perf_msr *msr, int cnt, bool no_zero, void *data);

#define __PMU_EVENT_GROUP(_name)                        \
static struct attribute *attrs_##_name[] = {            \
        &attr_##_name.attr.attr,                        \
        NULL,                                           \
}

#define PMU_EVENT_GROUP(_grp, _name)                    \
__PMU_EVENT_GROUP(_name);                               \
static struct attribute_group group_##_name = {         \
        .name  = #_grp,                                 \
        .attrs = attrs_##_name,                         \
}

#endif /* __ARCH_X86_EVENTS_PROBE_H__ */