From a33f63da26eb1990bee1ec13be3c05b1c73d2b5d Mon Sep 17 00:00:00 2001 From: George Bosilca Date: Sun, 27 Aug 2006 04:56:20 +0000 Subject: [PATCH] On Windows use the high performance timers ... differently or lose data in the conversion. This commit was SVN r11441. --- opal/mca/timer/windows/timer_windows.h | 7 ++----- opal/mca/timer/windows/timer_windows_component.c | 10 +++++++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/opal/mca/timer/windows/timer_windows.h b/opal/mca/timer/windows/timer_windows.h index ea9ff05d60..7f5fbc0876 100644 --- a/opal/mca/timer/windows/timer_windows.h +++ b/opal/mca/timer/windows/timer_windows.h @@ -28,25 +28,22 @@ extern "C" { #endif OPAL_DECLSPEC extern opal_timer_t opal_timer_windows_freq; +OPAL_DECLSPEC extern opal_timer_t opal_timer_windows_start; static inline opal_timer_t opal_timer_base_get_cycles(void) { LARGE_INTEGER now; QueryPerformanceCounter( &now ); - return now.QuadPart; + return (now.QuadPart - opal_timer_windows_start); } static inline opal_timer_t opal_timer_base_get_usec(void) { -#if OPAL_HAVE_SYS_TIMER_GET_CYCLES /* freq is in Hz, so this gives usec */ return opal_sys_timer_get_cycles() * 1000000 / opal_timer_windows_freq; -#else - return 0; -#endif } diff --git a/opal/mca/timer/windows/timer_windows_component.c b/opal/mca/timer/windows/timer_windows_component.c index c56a77519e..7399e3f771 100644 --- a/opal/mca/timer/windows/timer_windows_component.c +++ b/opal/mca/timer/windows/timer_windows_component.c @@ -23,6 +23,7 @@ #include "opal/constants.h" opal_timer_t opal_timer_windows_freq; +opal_timer_t opal_timer_windows_start; static int opal_timer_windows_open(void); @@ -58,8 +59,11 @@ opal_timer_windows_open(void) { LARGE_INTEGER now; - QueryPerformanceFrequency( &now ); - opal_timer_windows_freq = now.QuadPart; - + if( 0 != QueryPerformanceFrequency( &now ) ) { + opal_timer_windows_freq = now.QuadPart; + QueryPerformanceCounter( &now ); + opal_timer_windows_start = now.QuadPart; + return OPAL_SUCCESS; + } return OPAL_SUCCESS; }