Skip to contentSkip to conversation

Task Queue Imediate Bottom Halfs question.

DISCUSSION Ira Weiny 4 participants 4 messages Aug 19, 2001 – Aug 21, 2001

lore
Share & tools
lore

Ira Weiny

author
#0 lore raw

This is going to seem like a real stupid question but I just got burned because I did not know the answer and I would like to know.

In the 1394 stack (OHCI) the IRQ handler schedules "bottom half tasklets (task queues in the old stack)". They are scheduled to be "imediate" bottom half's. I thought (wrongly) that a bottom half executed out of IRQ time with interrupts __enabled__. As a result I put in a Async Rec handler which used printk (60ms worth to be exact). Needless to say this greatly disturbed our ISO transfers which did not get processed.

So, my question is, why use a bottom half here? Or really what is the difference between scheduling a task queue (tasklet) imediate vs just running the code in the IRQ handler?

Thanks,
Ira Weiny
[email protected]

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

#1 lore raw
Quoted 10 lines · Ira Weiny

This is going to seem like a real stupid question but I just got burned because I did not know the answer and I would like to know.

In the 1394 stack (OHCI) the IRQ handler schedules "bottom half tasklets (task queues in the old stack)". They are scheduled to be "imediate" bottom half's. I thought (wrongly) that a bottom half executed out of IRQ time with interrupts __enabled__. As a result I put in a Async Rec handler which used printk (60ms worth to be exact). Needless to say this greatly disturbed our ISO transfers which did not get processed.

Quoted 3 lines

So, my question is, why use a bottom half here? Or really what is the difference between scheduling a task queue (tasklet) imediate vs just running the code in the IRQ handler?

A performance hit? Running it straight from the interrupt handler mean that the handler is blocking until the request is finished. Not only does it have to wait for the ohci layer to process it, but also the ieee1394 layer, which in turn processes to the protocol drivers (sbp2, etc.). Really bad.

Ben

--
.----------=======-=-======-=========-----------=====------------=-=-----.

/  Ben Collins  --  ...on that fantastic voyage...  --  Debian GNU/Linux   \
`  [email protected]  --  [email protected]  --  [email protected]  '

`---=========------=======-------------=-=-----=-===-======-------=--=---'

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

#2 lore raw
In reply to Ira Weiny

On 19 Aug, this message from Ira Weiny echoed through cyberspace:

Quoted 3 lines

So, my question is, why use a bottom half here? Or really what is the difference between scheduling a task queue (tasklet) imediate vs just running the code in the IRQ handler?

Have a look at Documentation/DocBook/kernel-hacking.tmpl.

It explains some of these things quite well, I think.

Michel

-------------------------------------------------------------------------

Michel Lanners                 |  " Read Philosophy.  Study Art.
23, Rue Paul Henkes            |    Ask Questions.  Make Mistakes.
L-1710 Luxembourg              |
email   [email protected]            |
http://www.cpu.lu/~mlan        |                     Learn Always. "

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

#3 lore raw

Hi,

This free book from Oreilly might also help you:

http://www.xml.com/ldd/chapter/book/index.html

Regards,

-- Rodney

Quoted 10 lines · Michel Lanners

On 19 Aug, this message from Ira Weiny echoed through cyberspace:

Quoted 3 lines

So, my question is, why use a bottom half here? Or really what is the difference between scheduling a task queue (tasklet) imediate vs just running the code in the IRQ handler?

Have a look at Documentation/DocBook/kernel-hacking.tmpl.

It explains some of these things quite well, I think.

Michel

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/