gm2-libs/RTint
DEFINITION MODULE RTint ;
(* Provides users of the COROUTINES library with the
ability to create interrupt sources based on
file descriptors and timeouts. *)
FROM SYSTEM IMPORT ADDRESS ;
TYPE
DispatchVector = PROCEDURE (CARDINAL, CARDINAL, ADDRESS) ;
(*
InitInputVector - returns an interrupt vector which is associated
with the file descriptor, fd.
*)
PROCEDURE InitInputVector (fd: INTEGER; pri: CARDINAL) : CARDINAL ;
(*
InitOutputVector - returns an interrupt vector which is associated
with the file descriptor, fd.
*)
PROCEDURE InitOutputVector (fd: INTEGER; pri: CARDINAL) : CARDINAL ;
(*
InitTimeVector - returns an interrupt vector associated with
the relative time.
*)
PROCEDURE InitTimeVector (micro, secs: CARDINAL; pri: CARDINAL) : CARDINAL ;
(*
ReArmTimeVector - reprimes the vector, vec, to deliver an interrupt
at the new relative time.
*)
PROCEDURE ReArmTimeVector (vec: CARDINAL; micro, secs: CARDINAL) ;
(*
GetTimeVector - assigns, micro, and, secs, with the remaining
time before this interrupt will expire.
This value is only updated when a Listen
occurs.
*)
PROCEDURE GetTimeVector (vec: CARDINAL; VAR micro, secs: CARDINAL) ;
(*
AttachVector - adds the pointer, p, to be associated with the interrupt
vector. It returns the previous value attached to this
vector.
*)
PROCEDURE AttachVector (vec: CARDINAL; p: ADDRESS) : ADDRESS ;
(*
IncludeVector - includes, vec, into the dispatcher list of
possible interrupt causes.
*)
PROCEDURE IncludeVector (vec: CARDINAL) ;
(*
ExcludeVector - excludes, vec, from the dispatcher list of
possible interrupt causes.
*)
PROCEDURE ExcludeVector (vec: CARDINAL) ;
(*
Listen - will either block indefinitely (until an interrupt)
or alteratively will test to see whether any interrupts
are pending.
If a pending interrupt was found then, call, is called
and then this procedure returns.
It only listens for interrupts > pri.
*)
PROCEDURE Listen (untilInterrupt: BOOLEAN;
call: DispatchVector;
pri: CARDINAL) ;
(*
Init - allows the user to force the initialize order.
*)
PROCEDURE Init ;
END RTint.