我试图将kprobe转换为可加载的内核模块。
我能够运行内核树中samples/kprobes/
文件夹中提供的示例。
如果我们在内核中配置了kprobes(CONFIG_KPROBES
),那么__und_svc()
处理程序中的svc_entry
宏将扩展为64字节。
参考: http://lxr.free-electrons.com/source/arch/arm/kernel/entry-armv.S?a=arm#L245
我的目标是不触及内核端,在不启用CONFIG_KPROBES的情况下,将kprobe作为内核模块。
因此,内核编译时没有启用CONFIG_KPROBES。所以在__und_svc()中,svc_entry宏将扩展为0。
我想要解决以下疑问:
如果kprobe处理未定义指令异常(因为只有kprobe被创建),那么为什么会调用
__und_svc()
?__und_svc()
处理程序在kprobes方面的作用是什么?如果64字节内存是必需的,那么如何在不编译内核的情况下分配它?即如何动态完成?
请分享您的知识。