- 论坛徽章:
- 0
|
我在学习linux 驱动中断处理的时候,看到mini2440 自带的按键驱动中的中断申请函数的flag形参为什么是 IRQ_TYPE_EDGE_BOTH(中断触发方式)?此处不解?教材普遍都是用中断配置函数和中断申请函数结合,而该驱动里只用到了申请函数就把两项工作完成了,这让我很困惑
代码如下:
static int s3c24xx_buttons_open(struct inode *inode, struct file *file)
{
int i;
int err = 0;
for (i = 0; i < sizeof(button_irqs)/sizeof(button_irqs[0]); i++) {
if (button_irqs.irq < 0) {
continue;
}
err = request_irq(button_irqs.irq, buttons_interrupt, IRQ_TYPE_EDGE_BOTH,
button_irqs.name, (void *)&button_irqs);
if (err)
break;
}
if (err) {
i--;
for (; i >= 0; i--) {
if (button_irqs.irq < 0) {
continue;
}
disable_irq(button_irqs.irq);
free_irq(button_irqs.irq, (void *)&button_irqs);
}
return -EBUSY;
}
ev_press = 1;
return 0;
}
作为一个菜鸟现在不知如何是好啊,请各位大虾指点指点 |
|