sysclock.def 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. DEFINITION MODULE SysClock;
  2. (* ISO 10514-1 clock interface plus PIM-style Time/Clock helpers.
  3. GetClock returns UTC (zone = 0, no summer time); SetClock is not
  4. supported (CanSetClock = FALSE). *)
  5. CONST maxSecondParts = 1000000;
  6. CONST ClocksPerSec = 1000000;
  7. (* Processor-time ticks per second (libc CLOCKS_PER_SEC). *)
  8. TYPE
  9. Month = [1 .. 12];
  10. Day = [1 .. 31];
  11. Hour = [0 .. 23];
  12. Min = [0 .. 59];
  13. Sec = [0 .. 59];
  14. Fraction = [0 .. maxSecondParts];
  15. UTCDiff = [-780 .. 720];
  16. DateTime =
  17. RECORD
  18. year: CARDINAL;
  19. month: Month;
  20. day: Day;
  21. hour: Hour;
  22. minute: Min;
  23. second: Sec;
  24. fractions: Fraction; (* parts of a second *)
  25. zone: UTCDiff; (* minutes to add to local time for UTC *)
  26. summerTimeFlag: BOOLEAN;
  27. END;
  28. PROCEDURE CanGetClock (): BOOLEAN;
  29. (* TRUE: the system clock can be read. *)
  30. PROCEDURE CanSetClock (): BOOLEAN;
  31. (* FALSE: V3 does not set the system clock. *)
  32. PROCEDURE IsValidDateTime (userData: DateTime): BOOLEAN;
  33. (* Range-check a date/time value. *)
  34. PROCEDURE GetClock (VAR userData: DateTime);
  35. (* The current UTC date and time. *)
  36. PROCEDURE SetClock (userData: DateTime);
  37. (* Unsupported: CanSetClock is FALSE, so this is a no-op. *)
  38. PROCEDURE Time () : LONGINT;
  39. (* Seconds since the Unix epoch (1 January 1970, 00:00 UTC). *)
  40. PROCEDURE Clock () : LONGINT;
  41. (* Processor time used so far, in ticks of ClocksPerSec per second. *)
  42. END SysClock.