Windows.Timer.Mod 580 B

1234567891011121314151617181920212223242526
  1. (* Runtime support for high precision timer
  2. Copyright (C) Florian Negele
  3. *)
  4. MODULE Timer;
  5. IMPORT Kernel32;
  6. TYPE Counter* = LONGINT;
  7. PROCEDURE GetCounter- (): Counter;
  8. VAR counter: Kernel32.LargeInteger;
  9. BEGIN {UNCOOPERATIVE, UNCHECKED}
  10. ASSERT (Kernel32.QueryPerformanceCounter (counter) # 0);
  11. RETURN counter.LowPart;
  12. END GetCounter;
  13. PROCEDURE GetFrequency- (): Counter;
  14. VAR frequency: Kernel32.LargeInteger;
  15. BEGIN {UNCOOPERATIVE, UNCHECKED}
  16. IF Kernel32.QueryPerformanceFrequency (frequency) = 0 THEN RETURN 0 END;
  17. RETURN frequency.LowPart;
  18. END GetFrequency;
  19. END Timer.