/*kprobe_example.c*/ #include #include #include #include static struct kprobe kp; void handler_post(struct kprobe *p, struct pt_regs *regs, unsigned long flags) { printk("post_handler will loop.\n"); dump_stack(); for (;;); } static int __init kprobe_init(void) { int ret; kp.post_handler = handler_post; kp.symbol_name = "sysrq_handle_show_timers"; if ((ret = register_kprobe(&kp) < 0)) { printk("register_kprobe failed, returned %d\n", ret); return -1; } printk("kprobe registered\n"); return 0; } static void __exit kprobe_exit(void) { unregister_kprobe(&kp); printk("kprobe unregistered\n"); } module_init(kprobe_init) module_exit(kprobe_exit) MODULE_LICENSE("GPL");