[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
[rtl] Q: when are linux interrupt handlers are invoked?
The RTL white paper says :
In RT-Linux, all interrupts are initially handled by the Real-Time
kernel and are passed to the Linux task only when there are no
real-time tasks to run.
However, the rt-linux code seems to suggest that interrupts are passed to
Linux before real-time tasks get a chance to run. Here is the reasoning :
1. I assume assembly symbol "linux_IRQxx_interrupt" is the lowest-level
interrupt handler for those interrupts that are not interested by
any real-tasks.
2. "linux_IRQxx_interrupt" sets a irq flag in SFREQ and will invoke
"S_IRET" if the soft interrupt is turned on in linux.
3. "S_IRET" will call the the linux interrupt handler through "SFIDT" table.
I don't see anywhere RT tasks have a chance to execute before the linux
interrupt handler is invoked. It seems like RT tasks can be delayed
by lengthy linux interrupt handlers.
Is this right? Can someone either confirm this or point out what is
wrong with the logic?
--
Jun Sun
--- [rtl] ---
For more information on Real-Time Linux see:
http://rtlinux.cs.nmt.edu/