As we know that tasklet is used to be scheduled in interrupt handler to perform bottom half. To schedule a tasklet, its TASKLET_STATE_SCHED bit is checked to see if the same tasklet already been scheduled and has not yet been "consumed". This guarantees that the same tasklet will be scheduled only once. This is intended for preventing tasklet-list from being corrupted. What we can expect in the real world is "missing" tasklet: the tasklets scheduled are often less than the interrupts occured. That means something get missed.
For network driver, raising interrupt often indicates readiness of data. but missing tasklet does not necessary mean missing data, because buffer can always be used in interrupt handler to store the data.
For those where interrupt represents an externel event, we are not lucky because we do miss the one immediatly followed.
This may be common, but beside buffer, I could not think of other solution. Can someone contribute ?
Eric
-- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/