加载模块-》初始化函数-》注册中断处理函数-》中断到来-》处理中断函数-》卸载模块-》释放中断线
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/irq.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <linux/interrupt.h>
#include <linux/miscdevice.h>
#include <linux/cdev.h>
#include <asm/uaccess.h>
#include <mach/hardware.h>
#include <linux/platform_device.h>
#include <mach/regs-gpio.h>
#include <mach/gpio-bank-n.h>
#include <plat/gpio-cfg.h>
//中断处理函数
static irqreturn_t isr_button(int irq,void *dev_id,struct pt_regs *regs){
printk("hello Frank!\n");
return 0;
}
static int __init key1_init(){
int ret;
set_irq_type(IRQ_EINT(1), IRQ_TYPE_EDGE_FALLING);
ret = request_irq(IRQ_EINT(1),isr_button,IRQ_TYPE_EDGE_FALLING,"K1",NULL);
if(ret){
printk("K1_IRQ:could not register interrupt\n");
return ret;
}
printk("init ok!\n");
return 0;
}
static void __exit key1_exit(){
free_irq(IRQ_EINT(1),NULL);
printk("K1 exit\n");
}
module_init(key1_init);
module_exit(key1_exit);
MODULE_LICENSE("GPL");