[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/