On Fri, Sep 10, 2010 at 12:58 AM, Sri Ram Vemulpali <sri.ram.gmu06@xxxxxxxxx> wrote: > Hi Dave, > Thanks for explanation, but is there any delay between interrupt handler > and softirq execution. Suppose say INT7 triggered and its handler got > executed. Now this handler raised the softirq and finished its interrupt > context. Since interrupts preempts the current running task, after finishing > IRQ context does the task should resumes. But since softirq was scheduled > (raised), then is it that softirq will be executed immediately after > interrupt handler or it takes some time when interrupted task was switched > out and scheduler recognizes a softirq was pending. I know that ksoftirqd is > responsible to execute all pending softirqs , who will invoke this, and for > every periodic time ksoftirqd invokes and executes softirq. Can you please > explain. Thanks. Upon leaving the interrupt handler do_IRQ() calls irq_exit() which will check if there are any pending softirqs. if so __do_softirq will be called directly. This function will execute the softirqs directly. If it is not able to complete all softirqs then the ksoftirqd will be scheduled to complete the softirqs. Remember the softirqs do have a priority and the highest priority softirq will be run first, therefore the one just scheduled in the interrupt handler will not run first if there is a higher prio softirq waiting. This is my interpretation of the code. -- John -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ