#include <linux/module.h>
#include <linux/interrupt.h>
static int irq;
static char *devname;
module_param(irq, int, 0644);
module_param(devname, charp, 0644);
struct myirq
{
int devid;
};
struct myirq mydev = {1119};
//irq handler function
static irqreturn_t myirq_handler(int irq, void *dev)
{
struct myirq mydev;
static int count = 1;
mydev = *(struct myirq *)dev;
count ++;
return IRQ_HANDLED;
}
static int __init myirq_init(void)
{
if (request_irq(irq, myirq_handler, IRQF_SHARED, devname, &mydev) != 0) {
return -1;
}
return 0;
}
static void __exit myirq_exit(void)
{
free_irq(irq, &mydev);
}
module_init(myirq_init);
module_exit(myirq_exit);
MODULE_LICENSE("GPL");
sudo insmod interrupt.ko irq=1 devname=myirq