我在驱动程序中使用以下代码,但register_wide_hw_breakpoint
返回EACESS
错误。
hw_breakpoint_init(&attr);
attr.bp_addr = kallsyms_lookup_name(ksym_name);
attr.bp_len = HW_BREAKPOINT_LEN_4;
attr.bp_type = HW_BREAKPOINT_W | HW_BREAKPOINT_R;
sample_hbp = register_wide_hw_breakpoint(&attr, sample_hbp_handler, NULL);
if (IS_ERR((void __force *)sample_hbp)) {
ret = PTR_ERR((void __force *)sample_hbp);
printk(KERN_INFO "Breakpoint registration failed:%d\n",ret);
}
可能的原因是什么?我错过了CONFIG
选项,它将授予对硬件寄存器的访问权限吗?
其他信息:我的平台是X86_64,Linux
请帮忙。