About the top half and bottom half of the interrupt
We need to separate the work areas that need to be done in Interrupt Processing: In the interrupt processing program, only work with strict time restrictions, such as resetting the hardware and responding to the interrupt. And the processing that can be dragged to the back, or that may be sleep, should be put in the lower half to deal with this purpose obviously, is to make the interrupt handler as concise and clear as possible at the right time, the lower half will interrupt the execution
"Top half": indicates the actual response interruption routine (the routine registered by request_irq ).
Bottom half: a function that is scheduled by the top half and executed in a safer time.
Why is Division required?
There is a paradox about interruptions: most of the actions in Linux are interrupted. One Interrupt trigger requires a lot of work, but the interruption takes up CPU due to the high priority, we need to interrupt the occupation event more broken, but there are many things to do, this has to pull the top half and the bottom half.
About the top half and bottom half of the interrupt