Thanks for the answer, Paolo

i am afraid, I still don't understand:

On Fri, 11 Feb 2005, Paolo Mantegazza wrote:

> Not exactly so. When the RTAI hal is started it virtualises all the irqs
> to a single ADEOS handler (rtai_irq_trampoline)

"all the irqs" - for whom? I thought the structure was roughly

 Adeos          Adeos
irq-pipe0       irq-pipeN

  [ ] - ...     [ ] - Linux
  [ ] - ...     [ ] - RTAI
   ^             ^
   |    ...      |
 irq0   ...     irqN

which doesn't seem to hold. By virtualising all interrupts to one, you
mean, that for all hardware irqs Adeos calls only one RTAI handler
(dispatcher), right? That seems already to contradict Adeos' concept. If
it is so, then who delivers interrupts further to Linux? Adeos on the pipe
or RTAI bypassing Adeos? And then, rt_release_irq(RTAI_TIMER_IRQ); gives
the RTAI interrupt free, not Linux, right? But normally, when this
function is called there isn't a rt-timer ISR yet? Or is it done to make
calling rt_request_timer() multiple times without releasing the timer?

> that abstracts RTAI from
> ADEOS. So ADEOS calls the RTAI trampoline and the RTAI interface appears
> as an independent one.
>
> Thus rt_release_irq(RTAI_TIMER_IRQ) releases just the the HAL part. The
> trampoline still sees the related interrupt as a hard one, but having no
> own handler just propagate it to Linux.

Well, looks like trampoline has not much chance to propagate the interrupt
to Linux, as after releasing the timer-irq it gets immediately requested
again (in rt_request_timer())?

Thanks
Guennadi
---------------------------------
Guennadi Liakhovetski, Ph.D.
DSA Daten- und Systemtechnik GmbH
Pascalstr. 28
D-52076 Aachen
Germany

Reply via email to