Home
| Calendar
| Mail Lists
| List Archives
| Desktop SIG
| Hardware Hacking SIG
Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings Linux Cafe | Meeting Notes | Linux Links | Bling | About BLU |
Hello I am writing a paper for school and need help. I am aware that there have been changes to the Interrupt Handling functionality, particularly in the kernel version 2.4 and up through 2.6.x. In the old days (when was that) an Interrupt was serviced in two steps. That is, the Interrupt Handler was broken into two parts, a Top Half and a Bottom Half (BH). The Top Half would run to acknowledge the interrupt, identify the hardware device raising the Interrupt, check for data or status on the I/O device and return as quickly as possible to avoid missing any new interrupts. Then, the Bottom Half (of the service routine) was scheduled at some later time to complete the service of the Interrupt or to do the actual work required to service the hardware device. Then, the color or shape of the Bottom Half began to evolve whereby Tasklets, Softirqs and Work Queues took on the idea of the earlier Bottom Half. Now, the mention of a Bottom Half was really in a generic reference to the notion of "deferred work" or a BH that still accomplished the real work of the Interrupt Handler. Specifically, the old idea of a Bottom Half became generic in a sense, but was actually performed by one of three constructs. These new software constructs, Softirqs, Tasklets and Work Queues were really created to improve Scalability and allow more efficient use of SMP (symmetric multiprocessor) platforms as well. Some articles mention a neat example of networking where the Top Half notes that a packet has arrived off of the connection. But the real processing of the packet is done by a softirq (or BH). This is understandable, So, my question is really this. When would a softirq be used? What is the criteria to select a softirq in lieu of a tasklet or a work queue, to perform deferred work, or that work of a BH? I can?t seem to find any notes on why a Tasklet would be a better selection for use as a BH, rather than using a Work Queue or a softirq? I did read that one of these constructs, if running on one select CPU, would then NOT be runnable on another CPU. I did read about one of the constructs as being serializable versus ?non-serializable?. Can someone elaborate on selection of these constructs or any of this idea of processing bottom halves of Linux Interrupts or ISRs? -karina Karina Popkova
BLU is a member of BostonUserGroups | |
We also thank MIT for the use of their facilities. |