Pyrogenesis  trunk
Classes | Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
CounterHPET Class Reference
Inheritance diagram for CounterHPET:
Inheritance graph
[legend]
Collaboration diagram for CounterHPET:
Collaboration graph
[legend]

Classes

struct  HpetDescriptionTable
 

Public Member Functions

 CounterHPET ()
 
virtual const char * Name () const
 
Status Activate ()
 
void Shutdown ()
 
bool IsSafe () const
 
u64 Counter () const
 
size_t CounterBits () const
 
double NominalFrequency () const
 initial measurement of the tick rate. More...
 
double Resolution () const
 actual resolution [s]. More...
 
- Public Member Functions inherited from ICounter
virtual ~ICounter ()
 

Private Types

enum  RegisterOffsets { CAPS_AND_ID = 0x00, CONFIG = 0x10, COUNTER_VALUE = 0xF0, MAX_OFFSET = 0x3FF }
 

Private Member Functions

u64 Read64 (size_t offset) const
 
void Write64 (size_t offset, u64 value) const
 
Status VerifyCapabilities (double &frequency, u32 &counterBits) const
 

Static Private Member Functions

static Status MapRegisters (volatile void *&registers)
 

Private Attributes

volatile void * m_hpetRegisters
 
double m_frequency
 
u32 m_counterBits
 

Member Enumeration Documentation

Enumerator
CAPS_AND_ID 
CONFIG 
COUNTER_VALUE 
MAX_OFFSET 

Constructor & Destructor Documentation

CounterHPET::CounterHPET ( )
inline

Member Function Documentation

Status CounterHPET::Activate ( )
inlinevirtual

Implements ICounter.

u64 CounterHPET::Counter ( ) const
inlinevirtual
Returns
the current value of the counter (all but the lower CounterBits() bits must be zero)

Implements ICounter.

size_t CounterHPET::CounterBits ( ) const
inlinevirtual
Returns
the bit width of the counter (<= 64) WHRT uses this to ensure the counter (running at nominal frequency) doesn't overflow more than once during CALIBRATION_INTERVAL_MS.

Implements ICounter.

bool CounterHPET::IsSafe ( ) const
inlinevirtual

Implements ICounter.

static Status CounterHPET::MapRegisters ( volatile void *&  registers)
inlinestaticprivate
virtual const char* CounterHPET::Name ( ) const
inlinevirtual

Implements ICounter.

double CounterHPET::NominalFrequency ( ) const
inlinevirtual

initial measurement of the tick rate.

not necessarily correct (e.g. when using TSC: os_cpu_ClockFrequency isn't exact).

Implements ICounter.

u64 CounterHPET::Read64 ( size_t  offset) const
inlineprivate
double CounterHPET::Resolution ( ) const
inlinevirtual

actual resolution [s].

differs from 1/NominalFrequency if the timer adjustment is greater than 1 tick.

Implements ICounter.

void CounterHPET::Shutdown ( )
inlinevirtual

Implements ICounter.

Status CounterHPET::VerifyCapabilities ( double &  frequency,
u32 counterBits 
) const
inlineprivate
void CounterHPET::Write64 ( size_t  offset,
u64  value 
) const
inlineprivate

Member Data Documentation

u32 CounterHPET::m_counterBits
private
double CounterHPET::m_frequency
private
volatile void* CounterHPET::m_hpetRegisters
private

The documentation for this class was generated from the following file: