My driver needs to spend a lot of time inside the interrupt handler (draining a FIFO). I suspect this might cause problems blocking other interrupt handlers so I was thinking about moving this into a tasklet.I don't _think_ they are guaranteed to be executed immediately after the interrupt handler top half is complete, but they will execute before the next return to user space (read: they will complete before user processes run again).
Not being to familiar with tasklets, a few questions pop up.
* Will a tasklet scheduled from the interrupt handler be executed as soon as interrupt handling is done?
* Can tasklets be preempted?A tasklet can get preempted by a hard interrupt, but tasklets run in interrupt context, so don't do anything in a tasklet that can call schedule.
* If a tasklet gets scheduled while running, will it be executed once more? (Needed if I get another FIFO interrupt while the tasklet is just exiting).IIRC, a tasklet will execute once for every time tasklet_schedule is called.