[BASESRV][NTVDM][TESTVDD] Improve the FILE header section. Brought to you by Adam...
[reactos.git] / reactos / subsystems / mvdm / ntvdm / clock.h
1 /*
2 * COPYRIGHT: GPL - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
4 * FILE: subsystems/mvdm/ntvdm/clock.h
5 * PURPOSE: Clock for VDM
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
7 * Hermes Belusca-Maito (hermes.belusca@sfr.fr)
8 */
9
10 #ifndef _CLOCK_H_
11 #define _CLOCK_H_
12
13 /* DEFINITIONS ****************************************************************/
14
15 #define HARDWARE_TIMER_ENABLED (1 << 0)
16 #define HARDWARE_TIMER_ONESHOT (1 << 1)
17 #define HARDWARE_TIMER_PRECISE (1 << 2)
18
19 /* Converts a frequency in Hertz into a duration in nanoseconds */
20 #define HZ_TO_NS(Freq) (ULONGLONG)(1000000000ULL / (ULONGLONG)(Freq))
21
22 typedef VOID (FASTCALL *PHARDWARE_TIMER_PROC)(ULONGLONG ElapsedTime);
23
24 typedef struct _HARDWARE_TIMER
25 {
26 LIST_ENTRY Link;
27 ULONG Flags;
28 LONG EnableCount;
29 ULONGLONG Delay;
30 LARGE_INTEGER LastTick;
31 PHARDWARE_TIMER_PROC Callback;
32 } HARDWARE_TIMER, *PHARDWARE_TIMER;
33
34 /* FUNCTIONS ******************************************************************/
35
36 PHARDWARE_TIMER CreateHardwareTimer
37 (
38 ULONG Flags,
39 ULONGLONG Delay, /* nanoseconds */
40 PHARDWARE_TIMER_PROC Callback
41 );
42 VOID EnableHardwareTimer(PHARDWARE_TIMER Timer);
43 VOID DisableHardwareTimer(PHARDWARE_TIMER Timer);
44 VOID SetHardwareTimerDelay(PHARDWARE_TIMER Timer, ULONGLONG NewDelay);
45 VOID DestroyHardwareTimer(PHARDWARE_TIMER Timer);
46
47 ULONGLONG GetCycleCount(VOID);
48 ULONGLONG GetCycleSpeed(VOID);
49
50 VOID ClockUpdate(VOID);
51 BOOLEAN ClockInitialize(VOID);
52
53 #endif // _CLOCK_H_
54
55 /* EOF */