-
On 5/14/07, Helge Hafting <helge.hafting@xxxxxxxxxxxxx> wrote:
> Learning Linux wrote:
> > I have a very basic doubt here ... what makes it impossible to sleep
> > in an ISR? I mean, I know that the kernel preemption is disabled and
> > the kernel will panic, but I could not understand why?
> First: an ISR is meant to be very quick. It is supposed to do only a
> minimum of work needed to service the interrupt, then exit.
> This is important, as other interrupts might be blocked during your ISR.
> Sleeping is out of question, even a long-running loop in no-no.
>
> Second: You don't ever need to sleep in an ISR anyway.
> Complicated work that might take time or might need to sleep
> is not supposed to be in an ISR. If you think you have a need,
> tell us what you're up to and hopefully someone will explain
> how do do things properly.
>
> When an interrupt happens that needs complicated servicing, the
> ISR don't do the whole job. It just acknowledges the interrupt,
> perhaps does a few things with the device in question, then it
> exits. It leaves the rest of the work for a bottom half or kernel
> thread or something like that. Kernel threads may sleep . . .
Helge, i think the Original poster wants to know why
*exactly* cannot you sleep? What prevents me from
sleeping?
What is this complicated processing which force an ISR not to sleep?
Thanks
> Helge Hafting
>
> --
> To unsubscribe from this list: send an email with
> "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
> Please read the FAQ at http://kernelnewbies.org/FAQ
>
>
--
play the game