disabling interrupts under OS-9
Bob Babcock
PEPRBV%CFAAMP.BITNET at mitvma.mit.edu
Sun May 8 15:04:42 AEST 1988
There has been mention in Info-C of disabling interrupts when
executing sections of code which cannot be safely interrupted.
Usually the sample code uses something like protect()/unprotect()
around the critical statements. I would like to be able to do
this under OS-9/68K, but Microware does not provide the necessary
protect/unprotect functions. The obvious way of implementing
these by moving the appropriate bits to the status register does
not work in user state because the machine opcode is privileged,
and if the entire program is run in supervisor state, OS-9 turns
off time slicing, which I don't want to do.
[The reason why I want to do this is that I have a background
process driven by a periodic interrupt reading A/D converters and
performing various display and control tasks. The foreground
task needs to be able to occasionally read a different channel
from the same converter without worrying about a time slice or
periodic interrupt coming at just the wrong time and messing
things up.]
Has anyone developed a good solution to this problem? Microware
suggests that I write a trap handler, and put the critical code
in it. But that almost requires that I do some 68K assembly
language programming, and I would rather avoid that if possible.
The other option is to set up "in use" flags to coordinate access
to the hardware, but that seems much more complicated (there may
be more than two processes competing for the same hardware, and
also multiple devices to be shared).
More information about the Comp.lang.c
mailing list