[EMAIL PROTECTED] wrote:
Michaelin rt_request_timer() you do rt_release_irq(RTAI_TIMER_IRQ); if (rt_request_irq(RTAI_TIMER_IRQ, (rt_irq_handler_t)handler, NULL, 0) < 0) { but then in rt_free_timer() only rt_release_irq(RTAI_TIMER_IRQ); If I understand correctly, RTAI and Linux run under ADEOS in different domains, right (please, correct, if wrong)? So, request_irq in different domains is independent? Hence, the rt_release_irq(RTAI_TIMER_IRQ); in rt_request_timer() is redundant?
Not exactly so. When the RTAI hal is started it virtualises all the irqs to a single ADEOS handler (rtai_irq_trampoline) 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.
Paolo.
