45 #include "CAHostTimeBase.h"
47 Float64 CAHostTimeBase::sFrequency = 0;
48 Float64 CAHostTimeBase::sInverseFrequency = 0;
49 UInt32 CAHostTimeBase::sMinDelta = 0;
50 UInt32 CAHostTimeBase::sToNanosNumerator = 0;
51 UInt32 CAHostTimeBase::sToNanosDenominator = 0;
52 UInt32 CAHostTimeBase::sFromNanosNumerator = 0;
53 UInt32 CAHostTimeBase::sFromNanosDenominator = 0;
54 bool CAHostTimeBase::sUseMicroseconds =
false;
55 bool CAHostTimeBase::sIsInited =
false;
56 #if Track_Host_TimeBase
57 UInt64 CAHostTimeBase::sLastTime = 0;
66 void CAHostTimeBase::Initialize()
70 struct mach_timebase_info theTimeBaseInfo;
71 mach_timebase_info(&theTimeBaseInfo);
73 sToNanosNumerator = theTimeBaseInfo.numer;
74 sToNanosDenominator = theTimeBaseInfo.denom;
75 sFromNanosNumerator = sToNanosDenominator;
76 sFromNanosDenominator = sToNanosNumerator;
79 sFrequency =
static_cast<Float64
>(sToNanosDenominator) / static_cast<Float64>(sToNanosNumerator);
80 sFrequency *= 1000000000.0;
82 LARGE_INTEGER theFrequency;
83 QueryPerformanceFrequency(&theFrequency);
85 sToNanosNumerator = 1000000000ULL;
86 sToNanosDenominator = *((UInt64*)&theFrequency);
87 sFromNanosNumerator = sToNanosDenominator;
88 sFromNanosDenominator = sToNanosNumerator;
89 sFrequency =
static_cast<Float64
>(*((UInt64*)&theFrequency));
91 sInverseFrequency = 1.0 / sFrequency;
93 #if Log_Host_Time_Base_Parameters
94 DebugMessage(
"Host Time Base Parameters");
95 DebugMessageN1(
" Minimum Delta: %lu", sMinDelta);
96 DebugMessageN1(
" Frequency: %f", sFrequency);
97 DebugMessageN1(
" To Nanos Numerator: %lu", sToNanosNumerator);
98 DebugMessageN1(
" To Nanos Denominator: %lu", sToNanosDenominator);
99 DebugMessageN1(
" From Nanos Numerator: %lu", sFromNanosNumerator);
100 DebugMessageN1(
" From Nanos Denominator: %lu", sFromNanosDenominator);