#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/kallsyms.h>
#include <linux/perf_event.h>
#include <linux/hw_breakpoint.h>
static struct perf_event * __percpu *sample_hbp;
static char ksym_name[KSYM_NAME_LEN] = …;
module_param_string(…);
MODULE_PARM_DESC(…) …;
static void sample_hbp_handler(struct perf_event *bp,
struct perf_sample_data *data,
struct pt_regs *regs)
{ … }
static int __init hw_break_module_init(void)
{ … }
static void __exit hw_break_module_exit(void)
{ … }
module_init(hw_break_module_init);
module_exit(hw_break_module_exit);
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;