[uClinux-dev] Is linux supposed to service interrupts while executing syscalls?

chris m chrismulhearn at gmail.com
Wed Jan 3 16:09:03 EST 2007


Hi,  I'm porting uclinux 2.4.19 (The Xiptech mipsnommu port) to a new
mips-nommu platform.

In case you aren't familiar with Mips, the general interrupt/exception
plumbing is as follows:  There is a top level exception vector that is
called in any "regular" exception state, such as syscalls, data
alignment faults, etc.   Also, interrupts are considered a particular
type of exception.   So the dispatch code [the top-level exception
vector] figures out if its a syscall exception, interrupt exception,
etc.  and jumps to the appropriate handler.

While servicing an exception, interrupts are disabled.     My jiffy
clock is driven by one of these interrupts.  So as the kernel stands
now, I never reach my jiffy timer service routine while a process is
executing a syscall.

This doesn't seem right.   The timer interrupts should still be active
while performing a syscall, right, because some syscalls, such as a
long read from a file, could take a very long time, and we'd want to
be able to invoke the scheduler even if a process is in the middle of
kernel code, executing a syscall.

If you don't know the specifics of MIPS thats OK, I just want a
conceptual understanding of how its Supposed to be.

Thanks for any information.


More information about the uClinux-dev mailing list