October 2017
Intermediate to advanced
586 pages
14h 8m
English
In Chapter 3, Kernel Facilities and Helper Functions, we introduced peripheral IRQs, using request_irq() and request_threaded_irq(). With request_irq(), one registers a handler (top half) that will be executed in atomic context, from which one can schedule a bottom half using one of a differing mechanism discussed in the same chapter. On the other hand, with request_thread_irq(), one can provide top and bottom halves to the function, so that the former will run as a hardirq handler, which may decide to raise the second and threaded handler that can run in a kernel thread.
The problem with those approaches is that sometimes, the drivers requesting an IRQ do not know about the nature of the interrupt that ...