|
发表于 2015-7-31 16:34:20
9252 浏览 2 回复
外部中断request_irq与free_irq问题
本帖最后由 BHZ201314 于 2015-7-31 16:33 编辑
1.在一个驱动中通过request_irq()注册了5个按键中断,运行的时候可以用cat /proc/interrup 查看对应的中断号和中断名字如图
最后调用free_irq()来释放中断之后还是使用cat /proc/interrupt还是能看到中断号如图
,但是对应的中断名字已经看不到了,是空白的,这种情况是正常的吗?
2.还有释放中断后我再去按一次比如home按键 ,然后insmod 4412buttons.ko 时直接进入了中断服务程序执行了代码,这种情况也是正常的吗?
注:我的按键驱动是写成模块的, request_irq()在int __init buttons_init(void)里面,free_irq()在void __exit buttons_exit (void)里面。
中断函数:
irqreturn_t buttons_irq(int irq,void *dev_id)
{
int pinval;
pinval = gpio_get_value(pcdevp->gpio);
if(pinval)
{
key_val = 0x80|pcdevp->keynum;
}
else
{
key_val = 0x00|pcdevp->keynum;
}
printk("key_val = %d!\n",key_val);
ev_press = 1;
wake_up_interruptible(&button_waitq);
printk("%s button pressed!\n",pcdevp->buttons_name);
printk("exit buttons_irq!\n");
return IRQ_RETVAL(IRQ_HANDLED);
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|
|
|
|
|
|
|
楼主|
发表于 2015-8-1 12:28:46
|
|
|
|
|
|
登录或注册
扫一扫关注迅为公众号


|