diff --git a/opal/mca/timer/aix/timer_aix.h b/opal/mca/timer/aix/timer_aix.h index 278ee71c97..2e99ffb60d 100644 --- a/opal/mca/timer/aix/timer_aix.h +++ b/opal/mca/timer/aix/timer_aix.h @@ -2,7 +2,7 @@ * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana * University Research and Technology * Corporation. All rights reserved. - * Copyright (c) 2004-2006 The University of Tennessee and The University + * Copyright (c) 2004-2014 The University of Tennessee and The University * of Tennessee Research Foundation. All rights * reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, @@ -39,7 +39,7 @@ opal_timer_base_get_usec() retval = (t.tb_high * 1000000) + t.tb_low / 1000; return retval; -} +} static inline opal_timer_t opal_timer_base_get_cycles() diff --git a/opal/mca/timer/altix/timer_altix.h b/opal/mca/timer/altix/timer_altix.h index 1ed990999d..e588d74bb8 100644 --- a/opal/mca/timer/altix/timer_altix.h +++ b/opal/mca/timer/altix/timer_altix.h @@ -2,7 +2,7 @@ * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana * University Research and Technology * Corporation. All rights reserved. - * Copyright (c) 2004-2005 The University of Tennessee and The University + * Copyright (c) 2004-2014 The University of Tennessee and The University * of Tennessee Research Foundation. All rights * reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, @@ -36,7 +36,7 @@ static inline opal_timer_t opal_timer_base_get_usec(void) { return opal_timer_base_get_cycles() / opal_timer_altix_usec_conv; -} +} static inline opal_timer_t diff --git a/opal/mca/timer/darwin/timer_darwin.h b/opal/mca/timer/darwin/timer_darwin.h index 7d4e342c6c..961b3cfe09 100644 --- a/opal/mca/timer/darwin/timer_darwin.h +++ b/opal/mca/timer/darwin/timer_darwin.h @@ -2,7 +2,7 @@ * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana * University Research and Technology * Corporation. All rights reserved. - * Copyright (c) 2004-2005 The University of Tennessee and The University + * Copyright (c) 2004-2014 The University of Tennessee and The University * of Tennessee Research Foundation. All rights * reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, @@ -21,20 +21,24 @@ #include "opal_config.h" #include +#include typedef uint64_t opal_timer_t; /* frequency in mhz */ OPAL_DECLSPEC extern opal_timer_t opal_timer_darwin_freq; - +OPAL_DECLSPEC extern mach_timebase_info_data_t opal_timer_darwin_info; static inline opal_timer_t opal_timer_base_get_cycles(void) { + if( opal_timer_darwin_info.denom == 0 ) { + (void) mach_timebase_info(&opal_timer_darwin_info); + } /* this is basically a wrapper around the "right" assembly to get the tick counter off the PowerPC Time Base. I believe it's something similar on x86 */ - return mach_absolute_time(); + return mach_absolute_time() * opal_timer_darwin_info.numer / opal_timer_darwin_info.denom / 1000; } @@ -43,7 +47,7 @@ opal_timer_base_get_usec(void) { /* freq is in Hz, so this gives usec */ return mach_absolute_time() * 1000000 / opal_timer_darwin_freq; -} +} static inline opal_timer_t @@ -53,9 +57,9 @@ opal_timer_base_get_freq(void) } -#define OPAL_TIMER_CYCLE_NATIVE 1 +#define OPAL_TIMER_CYCLE_NATIVE 0 #define OPAL_TIMER_CYCLE_SUPPORTED 1 -#define OPAL_TIMER_USEC_NATIVE 0 +#define OPAL_TIMER_USEC_NATIVE 1 #define OPAL_TIMER_USEC_SUPPORTED 1 #endif diff --git a/opal/mca/timer/darwin/timer_darwin_component.c b/opal/mca/timer/darwin/timer_darwin_component.c index 6f05e2f088..aecb94ab95 100644 --- a/opal/mca/timer/darwin/timer_darwin_component.c +++ b/opal/mca/timer/darwin/timer_darwin_component.c @@ -2,7 +2,7 @@ * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana * University Research and Technology * Corporation. All rights reserved. - * Copyright (c) 2004-2005 The University of Tennessee and The University + * Copyright (c) 2004-2014 The University of Tennessee and The University * of Tennessee Research Foundation. All rights * reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, @@ -20,17 +20,15 @@ #include "opal_config.h" -#include - #include "opal/mca/timer/timer.h" #include "opal/mca/timer/darwin/timer_darwin.h" #include "opal/constants.h" opal_timer_t opal_timer_darwin_freq; +mach_timebase_info_data_t opal_timer_darwin_info; static int opal_timer_darwin_open(void); - const opal_timer_base_component_2_0_0_t mca_timer_darwin_component = { /* First, the mca_component_t struct containing meta information about the component itself */ diff --git a/opal/mca/timer/linux/timer_linux.h b/opal/mca/timer/linux/timer_linux.h index 6bdffcb0f7..af3b84e057 100644 --- a/opal/mca/timer/linux/timer_linux.h +++ b/opal/mca/timer/linux/timer_linux.h @@ -2,7 +2,7 @@ * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana * University Research and Technology * Corporation. All rights reserved. - * Copyright (c) 2004-2005 The University of Tennessee and The University + * Copyright (c) 2004-2014 The University of Tennessee and The University * of Tennessee Research Foundation. All rights * reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, @@ -44,7 +44,7 @@ opal_timer_base_get_usec(void) #else return 0; #endif -} +} static inline opal_timer_t @@ -56,7 +56,7 @@ opal_timer_base_get_freq(void) #define OPAL_TIMER_CYCLE_NATIVE OPAL_HAVE_SYS_TIMER_GET_CYCLES #define OPAL_TIMER_CYCLE_SUPPORTED OPAL_HAVE_SYS_TIMER_GET_CYCLES -#define OPAL_TIMER_USEC_NATIVE 0 +#define OPAL_TIMER_USEC_NATIVE 1 #define OPAL_TIMER_USEC_SUPPORTED OPAL_HAVE_SYS_TIMER_GET_CYCLES #endif diff --git a/opal/mca/timer/solaris/timer_solaris.h b/opal/mca/timer/solaris/timer_solaris.h index a48c570448..40973c432b 100644 --- a/opal/mca/timer/solaris/timer_solaris.h +++ b/opal/mca/timer/solaris/timer_solaris.h @@ -2,7 +2,7 @@ * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana * University Research and Technology * Corporation. All rights reserved. - * Copyright (c) 2004-2005 The University of Tennessee and The University + * Copyright (c) 2004-2014 The University of Tennessee and The University * of Tennessee Research Foundation. All rights * reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, @@ -35,7 +35,7 @@ opal_timer_base_get_usec(void) { /* gethrtime returns nanoseconds */ return gethrtime() / 1000; -} +} static inline opal_timer_t opal_timer_base_get_freq(void)