language-Modula2-0.1: examples/Modula-2_Libraries/PMOS/sources/general/timer.def
DEFINITION MODULE Timer;
(********************************************************)
(* *)
(* Clock handler for operating system. *)
(* *)
(* Author: P. Moylan *)
(* Last edited: 27 May 1989 *)
(* Description: *)
(* This module contains the clock *)
(* interrupt routine. It checks whether *)
(* the current task has used its time *)
(* quota, also keeps track of sleeping *)
(* tasks. *)
(* *)
(* Status: Seems to be working. *)
(* *)
(********************************************************)
FROM Semaphores IMPORT
(* type *) Semaphore;
PROCEDURE Sleep (milliseconds: CARDINAL);
(* Puts the caller to sleep for approximately the given number of *)
(* milliseconds. The time is not guaranteed to be precise, because *)
(* (a) after the specified time has expired, the caller is made *)
(* ready, but will not run immediately unless it has a higher *)
(* priority than the task which is running at that time, and (b) we *)
(* do not necessarily run the hardware timer with millisecond *)
(* resolution anyway. High resolution just adds to the system *)
(* overhead created by the timer interrupts. For an application *)
(* which genuinely needs high-precision delays, it makes more sense *)
(* to have a separate hardware timer dedicated just to that job. *)
PROCEDURE TimedWait (VAR (*INOUT*) s: Semaphore; TimeLimit: INTEGER;
VAR (*OUT*) TimedOut: BOOLEAN);
(* Like a semaphore Wait, except that it returns with TimedOut TRUE *)
(* if the corresponding Signal does not occur within TimeLimit *)
(* milliseconds. *)
END Timer.