Re: Looking for comments on Bottom-Half/Tasklet/SoftIRQ

From: Anders Peter Fugmann (afu@fugmann.dhs.org)
Date: Sun Aug 19 2001 - 11:59:22 EST


chuckw@ieee.org wrote:
> Greetings,
> I was reading the unreliable guide to kernel hacking and was looking for
> a little clarification on something. 2 Bottom halves cannot run at the same
> time, why?

Per linux definition of bottom halves, there can only run one buttom
half at one system wide. But dont use those - They are old and waists
resources. Try tasklets instead. Multible tasklets can run in parrallel
(but not the same tasklet)

> Also, could someone give me an example of a service which is a bottom half/
> tasklet/SoftIRQ?
Simple.

Imagine some hardware that generates interrupts.
Now we want to write a driver that keeps the hardware busy, so we
implement a top half handler (IRQ-handler), and let it retrieve som data
from the hardware. Instead of processing it right away, we shedule a
tasklet to do that job. This way we can handle more interrupts/sec from
the card, and the hardware is kept busy.

To summerize.
Buttom halves are the strictest (only one at a time.)
Takslets can run in parralel, but still no need to worry about reentrant
code.
SoftIrq give no guarrentee at all, and should be used with great care
(code need to be reentrant).

Also try to readLinux device drivers by A. Rubini:
http://www.xml.com/ldd/chapter/book/index.html

Hope it helps.
Anders Fugmann

>
> Thanks in advance,
> Chuck
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Aug 23 2001 - 21:00:31 EST