8 #define _VSB_CONFIG_FILE <../lib/h/config/vsbConfig.h> 15 #define EPICS_EXPOSE_LIBCOM_MONOTONIC_PRIVATE 21 #define NS_PER_SEC 1000000000 29 static void measureTickRate(
void);
32 #include <arch/ppc/vxPpcLib.h> 41 #define TIMEBASEGET(TB) \ 42 vxTimeBaseGet(&TB.u32[0], &TB.u32[1]) 47 sysTimeBaseFreq_t sysTimeBaseFreq =
50 if (sysTimeBaseFreq) {
51 ticksPerSec = sysTimeBaseFreq();
57 printf(
"Warning: sysTimeBaseFreq() present but returned zero.\n");
65 #elif CPU_FAMILY == I80X86 67 #include <arch/i86/pentiumLib.h> 68 #include <hwif/cpu/arch/i86/vxCpuIdLib.h> 76 #define TIMEBASEGET(TB) \ 77 pentiumTscGet64(&TB.i64) 81 ticksPerSec = vxCpuIdGetFreq();
87 printf(
"Warning: vxCpuIdGetFreq() returned zero.\n");
95 #error This CPU family not supported yet! 112 cantProceed(
"Monotonic time source not available.\n");
122 static void measureTickRate(
void)
127 printf(
"osdMonotonicInit: Measuring CPU time-base frequency ...");
134 ticksPerSec = end.
u64 - start.
u64;
136 printf(
" %llu ticks/sec.\n", (
unsigned long long) ticksPerSec);
void osdMonotonicInit(void)
epicsUInt64 epicsMonotonicGet(void)
Fetch monotonic counter, returns the number of nanoseconds since some unspecified time...
unsigned long long epicsUInt64
epicsUInt64 epicsMonotonicResolution(void)
Monotonic time resolution, may not be accurate. Returns the minimum non-zero time difference between ...
LIBCOM_API void *epicsStdCall epicsFindSymbol(const char *name)
LIBCOM_API void cantProceed(const char *msg,...)
Routines for code that can't continue or return after an error.
EPICS time-stamps (epicsTimeStamp), epicsTime C++ class and C functions for handling wall-clock times...