Author: hbelusca
Date: Sat Apr 18 00:29:14 2015
New Revision: 67235

URL: http://svn.reactos.org/svn/reactos?rev=67235&view=rev
Log:
[NTVDM]: Partial revert to r67234: delays were in fact better than frequencies, 
in case one would like to define sub-frequency timers. Instead, always specify 
delays in nanoseconds, and add a macro to convert from frequency in hertz to 
duration in nanoseconds.

Modified:
    trunk/reactos/subsystems/mvdm/ntvdm/clock.c
    trunk/reactos/subsystems/mvdm/ntvdm/clock.h
    trunk/reactos/subsystems/mvdm/ntvdm/hardware/cmos.c
    trunk/reactos/subsystems/mvdm/ntvdm/hardware/mouse.c
    trunk/reactos/subsystems/mvdm/ntvdm/hardware/pit.c
    trunk/reactos/subsystems/mvdm/ntvdm/hardware/ps2.c
    trunk/reactos/subsystems/mvdm/ntvdm/hardware/video/vga.c

Modified: trunk/reactos/subsystems/mvdm/ntvdm/clock.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/clock.c?rev=67235&r1=67234&r2=67235&view=diff
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/clock.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/clock.c [iso-8859-1] Sat Apr 18 
00:29:14 2015
@@ -141,7 +141,7 @@
     }
 }
 
-PHARDWARE_TIMER CreateHardwareTimer(ULONG Flags, ULONG Frequency, 
PHARDWARE_TIMER_PROC Callback)
+PHARDWARE_TIMER CreateHardwareTimer(ULONG Flags, ULONGLONG Delay, 
PHARDWARE_TIMER_PROC Callback)
 {
     PHARDWARE_TIMER Timer;
     
@@ -151,7 +151,7 @@
     Timer->Flags = Flags & ~HARDWARE_TIMER_ENABLED;
     Timer->EnableCount = 0;
     Timer->Callback = Callback;
-    SetHardwareTimerDelay(Timer, 1000000000ULL / (ULONGLONG)Frequency);
+    SetHardwareTimerDelay(Timer, Delay);
 
     if (Flags & HARDWARE_TIMER_ENABLED) EnableHardwareTimer(Timer);
     return Timer;
@@ -234,7 +234,7 @@
 
 #ifdef IPS_DISPLAY
 
-    IpsTimer = CreateHardwareTimer(HARDWARE_TIMER_ENABLED, 1, 
IpsDisplayCallback);
+    IpsTimer = CreateHardwareTimer(HARDWARE_TIMER_ENABLED, HZ_TO_NS(1), 
IpsDisplayCallback);
     if (IpsTimer == NULL)
     {
         wprintf(L"FATAL: Cannot create IPS display timer.\n");

Modified: trunk/reactos/subsystems/mvdm/ntvdm/clock.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/clock.h?rev=67235&r1=67234&r2=67235&view=diff
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/clock.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/clock.h [iso-8859-1] Sat Apr 18 
00:29:14 2015
@@ -18,6 +18,9 @@
 #define HARDWARE_TIMER_ONESHOT (1 << 1)
 #define HARDWARE_TIMER_PRECISE (1 << 2)
 
+/* Converts a frequency in Hertz into a duration in nanoseconds */
+#define HZ_TO_NS(Freq) (ULONGLONG)(1000000000ULL / (ULONGLONG)(Freq))
+
 typedef VOID (FASTCALL *PHARDWARE_TIMER_PROC)(ULONGLONG ElapsedTime);
 
 typedef struct _HARDWARE_TIMER
@@ -35,7 +38,7 @@
 PHARDWARE_TIMER CreateHardwareTimer
 (
     ULONG Flags,
-    ULONG Frequency, // in Hz
+    ULONGLONG Delay, /* nanoseconds */
     PHARDWARE_TIMER_PROC Callback
 );
 VOID EnableHardwareTimer(PHARDWARE_TIMER Timer);

Modified: trunk/reactos/subsystems/mvdm/ntvdm/hardware/cmos.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/hardware/cmos.c?rev=67235&r1=67234&r2=67235&view=diff
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/hardware/cmos.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/hardware/cmos.c [iso-8859-1] Sat Apr 18 
00:29:14 2015
@@ -44,7 +44,7 @@
     /* 1 and 2 act like 8 and 9 */
     if (RateSelect <= 2) RateSelect += 7;
 
-    SetHardwareTimerDelay(PeriodicTimer, 1000000000ULL / (ULONGLONG)(1 << (16 
- RateSelect)));
+    SetHardwareTimerDelay(PeriodicTimer, HZ_TO_NS(1 << (16 - RateSelect)));
     EnableHardwareTimer(PeriodicTimer);
 }
 
@@ -501,9 +501,11 @@
     RegisterIoPort(CMOS_ADDRESS_PORT, NULL        , CmosWritePort);
     RegisterIoPort(CMOS_DATA_PORT   , CmosReadPort, CmosWritePort);
 
-    ClockTimer = CreateHardwareTimer(HARDWARE_TIMER_ENABLED, 1, RtcTimeUpdate);
+    ClockTimer = CreateHardwareTimer(HARDWARE_TIMER_ENABLED,
+                                     HZ_TO_NS(1),
+                                     RtcTimeUpdate);
     PeriodicTimer = CreateHardwareTimer(HARDWARE_TIMER_ENABLED | 
HARDWARE_TIMER_PRECISE,
-                                        1000,
+                                        HZ_TO_NS(1000),
                                         RtcPeriodicTick);
 }
 

Modified: trunk/reactos/subsystems/mvdm/ntvdm/hardware/mouse.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/hardware/mouse.c?rev=67235&r1=67234&r2=67235&view=diff
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/hardware/mouse.c        [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/hardware/mouse.c        [iso-8859-1] 
Sat Apr 18 00:29:14 2015
@@ -454,7 +454,9 @@
     MouseMutex = CreateMutex(NULL, FALSE, NULL);
     if (MouseMutex == NULL) return FALSE;
 
-    StreamTimer = CreateHardwareTimer(HARDWARE_TIMER_ENABLED, 100, 
MouseStreamingCallback);
+    StreamTimer = CreateHardwareTimer(HARDWARE_TIMER_ENABLED,
+                                      HZ_TO_NS(100),
+                                      MouseStreamingCallback);
 
     MouseReset();
     return TRUE;

Modified: trunk/reactos/subsystems/mvdm/ntvdm/hardware/pit.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/hardware/pit.c?rev=67235&r1=67234&r2=67235&view=diff
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/hardware/pit.c  [iso-8859-1] (original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/hardware/pit.c  [iso-8859-1] Sat Apr 18 
00:29:14 2015
@@ -511,7 +511,7 @@
 
     /* Register the hardware timer */
     MasterClock = CreateHardwareTimer(HARDWARE_TIMER_ENABLED | 
HARDWARE_TIMER_PRECISE,
-                                      PIT_BASE_FREQUENCY,
+                                      HZ_TO_NS(PIT_BASE_FREQUENCY),
                                       PitClock);
 }
 

Modified: trunk/reactos/subsystems/mvdm/ntvdm/hardware/ps2.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/hardware/ps2.c?rev=67235&r1=67234&r2=67235&view=diff
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/hardware/ps2.c  [iso-8859-1] (original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/hardware/ps2.c  [iso-8859-1] Sat Apr 18 
00:29:14 2015
@@ -405,7 +405,9 @@
     RegisterIoPort(PS2_CONTROL_PORT, PS2ReadPort, PS2WritePort);
     RegisterIoPort(PS2_DATA_PORT   , PS2ReadPort, PS2WritePort);
 
-    IrqTimer = CreateHardwareTimer(HARDWARE_TIMER_ONESHOT, 100, 
GeneratePS2Irq);
+    IrqTimer = CreateHardwareTimer(HARDWARE_TIMER_ONESHOT,
+                                   HZ_TO_NS(100),
+                                   GeneratePS2Irq);
 
     return TRUE;
 }

Modified: trunk/reactos/subsystems/mvdm/ntvdm/hardware/video/vga.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/hardware/video/vga.c?rev=67235&r1=67234&r2=67235&view=diff
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/hardware/video/vga.c    [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/hardware/video/vga.c    [iso-8859-1] 
Sat Apr 18 00:29:14 2015
@@ -2127,8 +2127,8 @@
     RegisterIoPort(0x3D8, VgaReadPort, VgaWritePort);   // CGA_MODE_CTRL_REG
     RegisterIoPort(0x3D9, VgaReadPort, VgaWritePort);   // CGA_PAL_CTRL_REG
 
-    HSyncTimer = CreateHardwareTimer(HARDWARE_TIMER_ENABLED, 31469, 
VgaHorizontalRetrace);
-    VSyncTimer = CreateHardwareTimer(HARDWARE_TIMER_ENABLED, 60, 
VgaVerticalRetrace);
+    HSyncTimer = CreateHardwareTimer(HARDWARE_TIMER_ENABLED, HZ_TO_NS(31469), 
VgaHorizontalRetrace);
+    VSyncTimer = CreateHardwareTimer(HARDWARE_TIMER_ENABLED, HZ_TO_NS(60), 
VgaVerticalRetrace);
 
     /* Return success */
     return TRUE;


Reply via email to