Re: regarding do_irq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux