1
1
Этот коммит содержится в:
George Bosilca 2014-11-28 15:19:37 -05:00 коммит произвёл Jeff Squyres
родитель 00300f464d
Коммит 5277fd5aa2
2 изменённых файлов: 20 добавлений и 17 удалений

Просмотреть файл

@ -24,8 +24,8 @@
OPAL_DECLSPEC extern opal_timer_t opal_timer_linux_freq;
OPAL_DECLSPEC extern opal_timer_t *opal_timer_base_get_cycles(void);
OPAL_DECLSPEC extern opal_timer_t *opal_timer_base_get_usec(void);
OPAL_DECLSPEC extern opal_timer_t (*opal_timer_base_get_cycles)(void);
OPAL_DECLSPEC extern opal_timer_t (*opal_timer_base_get_usec)(void);
OPAL_DECLSPEC extern opal_timer_t opal_timer_base_get_freq(void);

Просмотреть файл

@ -23,6 +23,7 @@
#endif
#include "opal/mca/timer/timer.h"
#include "opal/mca/timer/base/base.h"
#include "opal/mca/timer/linux/timer_linux.h"
#include "opal/constants.h"
@ -32,11 +33,11 @@ static opal_timer_t opal_timer_base_get_usec_sys_timer(void);
#if OPAL_HAVE_CLOCK_GETTIME
static opal_timer_t opal_timer_base_get_cycles_clock_gettime(void);
static opal_timer_t opal_timer_base_get_usec_clock_gettime(void);
opal_timer_t *opal_timer_base_get_cycles = opal_timer_base_get_cycles_clock_gettime;
opal_timer_t *opal_timer_base_get_usec = opal_timer_base_get_usec_clock_gettime;
opal_timer_t (*opal_timer_base_get_cycles)(void) = opal_timer_base_get_cycles_clock_gettime;
opal_timer_t (*opal_timer_base_get_usec)(void) = opal_timer_base_get_usec_clock_gettime;
#else
opal_timer_t *opal_timer_base_get_cycles = opal_timer_base_get_cycles_sys_timer;
opal_timer_t *opal_timer_base_get_usec = opal_timer_base_get_usec_sys_timer;
opal_timer_t (*opal_timer_base_get_cycles)(void) = opal_timer_base_get_cycles_sys_timer;
opal_timer_t (*opal_timer_base_get_usec)(void) = opal_timer_base_get_usec_sys_timer;
#endif /* OPAL_HAVE_CLOCK_GETTIME */
opal_timer_t opal_timer_linux_freq;
@ -146,31 +147,33 @@ static int opal_timer_linux_find_freq(void)
int opal_timer_linux_open(void)
{
int ret = OPAL_SUCCESS;
#if !OPAL_HAVE_CLOCK_GETTIME
ret = opal_timer_linux_find_freq();
#endif
if(mca_timer_base_monotonic) {
#if OPAL_HAVE_CLOCK_GETTIME
struct timespec *res;
if( 0 == clock_getres(CLOCK_MONOTONIC, &res)) {
opal_timer_linux_freq = res.tv_nsec;
return ret;
}
struct timespec res;
if( 0 == clock_getres(CLOCK_MONOTONIC, &res)) {
opal_timer_linux_freq = res.tv_nsec;
opal_timer_base_get_cycles = opal_timer_base_get_cycles_clock_gettime;
opal_timer_base_get_usec = opal_timer_base_get_usec_clock_gettime;
return ret;
}
#else
#if (0 == OPAL_TIMER_MONOTONIC)
/* Monotonic time requested but cannot be found. Complain! */
opal_show_help("help-opal-timer-linux.txt", "monotonic not supported", 1);
/* Monotonic time requested but cannot be found. Complain! */
opal_show_help("help-opal-timer-linux.txt", "monotonic not supported", 1);
#endif /* (0 == OPAL_TIMER_MONOTONIC) */
#endif
}
ret = opal_timer_linux_find_freq();
opal_timer_base_get_cycles = opal_timer_base_get_cycles_sys_timer;
opal_timer_base_get_usec = opal_timer_base_get_usec_sys_timer;
return ret;
}
#if OPAL_HAVE_CLOCK_GETTIME
opal_timer_t opal_timer_base_get_usec_clock_gettime(void)
{
struct timespec *tp;
struct timespec tp;
if( 0 == clock_gettime(CLOCK_MONOTONIC, &tp) ) {
return (tp.tv_sec * 1e9 + tp.tv_nsec);