* more AIX timer changes. Rough implementation, and some configure
updates that should make things out on aries happier This commit was SVN r6963.
Этот коммит содержится в:
родитель
2191d4a6b9
Коммит
0eb5337230
@ -43,15 +43,27 @@ AC_DEFUN([MCA_timer_aix_CONFIG],[
|
|||||||
[timer_aix_happy="yes"],
|
[timer_aix_happy="yes"],
|
||||||
[timer_aix_happy="no"])])
|
[timer_aix_happy="no"])])
|
||||||
|
|
||||||
|
# look to see if -lpmapi is available
|
||||||
|
timer_aix_LIBS=
|
||||||
|
timer_aix_LIBS_SAVE="$LIBS"
|
||||||
AS_IF([test "$timer_aix_happy" = "yes"],
|
AS_IF([test "$timer_aix_happy" = "yes"],
|
||||||
[AC_CHECK_FUNC([pm_cycles],
|
[AC_CHECK_LIB([pmapi],
|
||||||
[timer_aix_happy="yes"],
|
[pm_cycles],
|
||||||
[timer_aix_happy="no"])])
|
[timer_aix_LIBS="-lpmapi"],
|
||||||
|
[timer_aix_LIBS=""])])
|
||||||
|
|
||||||
|
# get us a HAVE_PM_CYCLES #define
|
||||||
|
AS_IF([test "$timer_aix_happy" = "yes"],
|
||||||
|
[AC_CHECK_FUNCS([pm_cycles])
|
||||||
|
AC_CHECK_HEADERS([pmapi.h])])
|
||||||
|
LIBS="$timer_aix_LIBS_SAVE"
|
||||||
|
|
||||||
AS_IF([test "$timer_aix_happy" = "no" -a \
|
AS_IF([test "$timer_aix_happy" = "no" -a \
|
||||||
"$timer_aix_should_use" = "1"],
|
"$timer_aix_should_use" = "1"],
|
||||||
[AC_MSG_ERROR([AIX timer requested but not available. Aborting.])])
|
[AC_MSG_ERROR([AIX timer requested but not available. Aborting.])])
|
||||||
|
|
||||||
|
AC_SUBST(timer_aix_LIBS)
|
||||||
|
|
||||||
AS_IF([test "$timer_aix_happy" = "yes"],
|
AS_IF([test "$timer_aix_happy" = "yes"],
|
||||||
[timer_base_include="aix/timer_aix.h"
|
[timer_base_include="aix/timer_aix.h"
|
||||||
$1],
|
$1],
|
||||||
|
@ -17,35 +17,51 @@
|
|||||||
#ifndef OPAL_MCA_TIMER_AIX_TIMER_AIX_H
|
#ifndef OPAL_MCA_TIMER_AIX_TIMER_AIX_H
|
||||||
#define OPAL_MCA_TIMER_AIX_TIMER_AIX_H
|
#define OPAL_MCA_TIMER_AIX_TIMER_AIX_H
|
||||||
|
|
||||||
#if 0
|
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <pmapi.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef uint64_t opal_timer_t;
|
typedef uint64_t opal_timer_t;
|
||||||
|
|
||||||
|
extern opal_timer_t opal_timer_aix_freq_mhz;
|
||||||
|
extern opal_timer_t opal_timer_aix_freq;
|
||||||
|
|
||||||
static inline opal_timer_t
|
static inline opal_timer_t
|
||||||
opal_timer_base_get_cycles()
|
opal_timer_base_get_cycles()
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_PM_CYCLES
|
||||||
|
return opal_timer_base_get_usec * opal_timer_aix_freq_mhz;
|
||||||
|
#else
|
||||||
return 0;
|
return 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline opal_timer_t
|
static inline opal_timer_t
|
||||||
opal_timer_base_get_usec()
|
opal_timer_base_get_usec()
|
||||||
{
|
{
|
||||||
return 0;
|
timebasestruct_t t;
|
||||||
|
uint64_t retval;
|
||||||
|
|
||||||
|
read_real_time(&t, TIMEBASE_SZ);
|
||||||
|
time_base_to_time(&t, TIMEBASE_SZ);
|
||||||
|
retval = (t.tb_high * 1000000) + t.tb_low / 1000;
|
||||||
|
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline opal_timer_t
|
static inline opal_timer_t
|
||||||
opal_timer_base_get_freq()
|
opal_timer_base_get_freq()
|
||||||
{
|
{
|
||||||
return 0;
|
return opal_timer_aix_freq;;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAVE_PM_CYCLES
|
||||||
|
#define OPAL_TIMER_CYCLE_NATIVE 0
|
||||||
|
#define OPAL_TIMER_CYCLE_SUPPORTED 1
|
||||||
|
#else
|
||||||
#define OPAL_TIMER_CYCLE_NATIVE 0
|
#define OPAL_TIMER_CYCLE_NATIVE 0
|
||||||
#define OPAL_TIMER_CYCLE_SUPPORTED 0
|
#define OPAL_TIMER_CYCLE_SUPPORTED 0
|
||||||
#define OPAL_TIMER_USEC_NATIVE 0
|
#endif
|
||||||
#define OPAL_TIMER_USEC_SUPPORTED 0
|
#define OPAL_TIMER_USEC_NATIVE 1
|
||||||
|
#define OPAL_TIMER_USEC_SUPPORTED 1
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -19,6 +19,15 @@
|
|||||||
#include "opal/mca/timer/timer.h"
|
#include "opal/mca/timer/timer.h"
|
||||||
#include "opal/mca/timer/aix/timer_aix.h"
|
#include "opal/mca/timer/aix/timer_aix.h"
|
||||||
|
|
||||||
|
#include <sys/time.h>
|
||||||
|
#ifdef HAVE_PMAPI_H
|
||||||
|
#include <pmapi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
opal_timer_t opal_timer_aix_freq_mhz;
|
||||||
|
opal_timer_t opal_timer_aix_freq;
|
||||||
|
|
||||||
|
static int opal_timer_aix_open(void);
|
||||||
|
|
||||||
const opal_timer_base_component_1_0_0_t mca_timer_aix_component = {
|
const opal_timer_base_component_1_0_0_t mca_timer_aix_component = {
|
||||||
/* First, the mca_component_t struct containing meta information
|
/* First, the mca_component_t struct containing meta information
|
||||||
@ -35,7 +44,7 @@ const opal_timer_base_component_1_0_0_t mca_timer_aix_component = {
|
|||||||
OPAL_RELEASE_VERSION,
|
OPAL_RELEASE_VERSION,
|
||||||
|
|
||||||
/* Component open and close functions */
|
/* Component open and close functions */
|
||||||
NULL,
|
opal_timer_aix_open,
|
||||||
NULL
|
NULL
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -45,3 +54,16 @@ const opal_timer_base_component_1_0_0_t mca_timer_aix_component = {
|
|||||||
true
|
true
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
opal_timer_aix_open(void)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_PM_CYCLES
|
||||||
|
opal_timer_aix_freq = pm_cycles();
|
||||||
|
opal_timer_aix_freq_mhz = opal_timer_aix_freq / 1000000;
|
||||||
|
#else
|
||||||
|
opal_timer_aix_freq_mhz = 0;
|
||||||
|
opal_timer_aix_freq = 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user