When allocating an interrupt (IRQ line) with the {devm_}request{_threaded}_irq() APIs (we'll cover the variants of request_irq() shortly), you can specify certain interrupt flags that will affect the interrupt line's configuration and/or behavior. The parameter that's responsible for this is unsigned long flags (as we mentioned in the Allocating your interrupt handler with request_irq() section). It's important to realize it's a bitmask; you can bitwise-OR several flags to get their combined effect. The flag values fall broadly into a few classes: flags to do with IRQ line sharing, interrupt threading, and suspend/resume behavior. They're all in the linux/interrupt.h header in IRQF_foo format. The following are some of the most common ones:
- IRQF_SHARED: This allows you to share the IRQ line between several devices (required for devices on the PCI bus).
- IRQF_ONESHOT:...