Real-time patch (was Re: IO-APIC SMP irq routing patch, 2.1.77-D

Victor Yodaiken (yodaiken@chelm.cs.nmt.edu)
Sun, 4 Jan 1998 07:29:53 -0700


This tar file contains two new files and a patch file for 2.1.76 that
add the soft interrupt control needed for real-time. They implement
a soft version of irq redirection so that all processors accept interrupts.
I have no idea whether they are compatible with Ingo's patch, but will
look at this next.
Bugs, performance results, etc would be deeply appreciated.

To install: uuudecode, untar in the linux source root directory, then
run patch -p0 on the untarred patch file.
------------------------------------------------------------------o

begin 644 smprt.tar.gz
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
GISSE*4]YRE.>\I2G/.4I3WG*4Y[RE*<\Y2E/_U/IW]XU%^\`H```
`
end