#include <linux/kprobes.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/device.h>
#include <linux/notifier.h>
#include <linux/fs.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/list.h>
#include <linux/interrupt.h>
static irqreturn_t ts_interrupt_probe(int irq, void *dev_id)
{
printk("KERN_INFO %s: irq = %d\n",__func__, irq);
jprobe_return();
return IRQ_HANDLED;
}
static struct jprobe my_jprobe = {
.entry = (kprobe_opcode_t *) ts_interrupt_probe,
.kp = {
// can not set both addr and symbo_name
// either set addr or symbol_name
// if not -21 while retured
.addr = NULL, //(kprobe_opcode_t *) 0xc04e6e4,
.symbol_name = "ft5x0x_ts_interrupt",
},
};
static int __init my_jprobe_init(void)
{
int ret = 0;
printk(KERN_INFO "ts_interrupt_probe jprobe module install...\n");
ret = register_jprobe(&my_jprobe);
if (ret < 0) {
printk(KERN_INFO "register_jprobe failed, returned %d\n", ret);
return ret;
}
printk(KERN_INFO "Planted jprobe at %p, handler addr %p\n",
my_jprobe.kp.addr, my_jprobe.entry);
return ret;
}
static void __exit my_jprobe_exit(void)
{
printk(KERN_INFO "ts_interrupt_probe jprobe module uninstall...\n");
unregister_jprobe(&my_jprobe);
printk(KERN_INFO "jprobe at %p unregistered\n", my_jprobe.kp.addr);
}
module_init(my_jprobe_init);
module_exit(my_jprobe_exit);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Jprobe test driver");
jprobe module code
最新推荐文章于 2015-12-01 21:19:00 发布