/** * ========================================================================= * File : pmt.h * Project : 0 A.D. * Description : Timer implementation using ACPI PM timer * ========================================================================= */ // license: GPL; see lib/license.txt #ifndef INCLUDED_PMT #define INCLUDED_PMT #include "counter.h" static const i64 PMT_FREQ = 3579545; // (= master oscillator frequency/4) class CounterPMT : public ICounter { public: CounterPMT() : m_portAddress(0xFFFF) { } virtual const char* Name() const { return "PMT"; } 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: u16 m_portAddress; }; #endif // #ifndef INCLUDED_PMT