我想请问一下关于
request_irq(unsigned int irq, irq_handler_t handler,
unsigned long flags, const char *name, void *dev)
里面的一些细节。
现在问题是我原本的device driver是使用request_threaded_irq
但是现在因为某些原因必须改成 request_irq
那这样我原本的flag是
request_threaded_irq(i2c->irq, NULL, abc_irq_handler,IRQF_TRIGGER_RISING |
IRQF_TRIGGER_FALLING | IRQF_ONESHOT, "abc", abc);
就可以直接改成下面这样吗?
request_irq(i2c->irq,abc_irq_handler,RQF_TRIGGER_RISING |
IRQF_TRIGGER_FALLING | IRQF_ONESHOT, "abc", abc);
主要有几个问题?
1. 上面的改法正确吗?
2. flag里面有一个IRQF_SHARED, 这个是什么状况下用的? (看英文解释没什么FU)
3. 我在网络上看到sample code
request_irq(button_irqs[i].irq, buttons_interrupt, IRQF_DISABLED
| IRQF_TRIGGER_RISING, button_irqs[i].name, NULL);
为什么flag里面要带一个"IRQF_DISABLED" ? 这个有什么用意吗?
thanks