Typically, it's the core kernel (and/or arch-specific) code that handles low-level interrupt management. This includes doing things such as masking them as and when required. Nevertheless, some drivers, as well as the OS, require fine-grained control when enabling/disabling hardware interrupts. As your driver or module code runs with kernel privileges, the kernel provides (exported) helper routines that allow you to do exactly this:
| Brief comment | API or helper routine |
| Disable/enable all interrupts on the local processor | |
| Unconditionally disables all interrupts on the local (current) processor core. | local_irq_disable() |
| Unconditionally enables all interrupts on the local (current) processor core. | local_irq_enable() |
| Saves the state (interrupt mask) of, and then disables all interrupts on the local (current) processor core. The state is saved in the flags parameter that's passed. | local_irq_save(unsigned long flags); |
| Restores the... |