/** * ========================================================================= * File : hpet.h * Project : 0 A.D. * Description : Timer implementation using timeGetTime * ========================================================================= */ // license: GPL; see lib/license.txt #ifndef INCLUDED_HPET #define INCLUDED_HPET #include "counter.h" class CounterHPET : public ICounter { public: CounterHPET() : m_hpetRegisters(0) { } virtual const char* Name() const { return "HPET"; } virtual LibError Activate(); virtual void Shutdown(); virtual bool IsSafe() const; virtual u64 Counter() const; /** * WHRT uses this to ensure the counter (running at nominal frequency) * doesn't overflow more than once during CALIBRATION_INTERVAL_MS. **/ virtual uint CounterBits() const; /** * initial measurement of the tick rate. not necessarily correct * (e.g. when using TSC: wcpu_ClockFrequency isn't exact). **/ virtual double NominalFrequency() const; private: struct HpetRegisters; volatile HpetRegisters* m_hpetRegisters; }; #endif // #ifndef INCLUDED_HPET