Pyrogenesis  13997
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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:
ICounter

Classes

struct  HpetDescriptionTable
 

Public Member Functions

 CounterHPET ()
 
virtual const wchar_tName () 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
 

Detailed Description

Definition at line 46 of file hpet.cpp.

Member Enumeration Documentation

Enumerator
CAPS_AND_ID 
CONFIG 
COUNTER_VALUE 
MAX_OFFSET 

Definition at line 128 of file hpet.cpp.

Constructor & Destructor Documentation

CounterHPET::CounterHPET ( )
inline

Definition at line 49 of file hpet.cpp.

Member Function Documentation

Status CounterHPET::Activate ( )
inlinevirtual

Implements ICounter.

Definition at line 59 of file hpet.cpp.

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

Implements ICounter.

Definition at line 89 of file hpet.cpp.

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.

Definition at line 98 of file hpet.cpp.

bool CounterHPET::IsSafe ( ) const
inlinevirtual

Implements ICounter.

Definition at line 82 of file hpet.cpp.

static Status CounterHPET::MapRegisters ( volatile void *&  registers)
inlinestaticprivate

Definition at line 136 of file hpet.cpp.

virtual const wchar_t* CounterHPET::Name ( ) const
inlinevirtual

Implements ICounter.

Definition at line 54 of file hpet.cpp.

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.

Definition at line 103 of file hpet.cpp.

u64 CounterHPET::Read64 ( size_t  offset) const
inlineprivate

Definition at line 161 of file hpet.cpp.

double CounterHPET::Resolution ( ) const
inlinevirtual

actual resolution [s].

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

Implements ICounter.

Definition at line 108 of file hpet.cpp.

void CounterHPET::Shutdown ( )
inlinevirtual

Implements ICounter.

Definition at line 73 of file hpet.cpp.

Status CounterHPET::VerifyCapabilities ( double &  frequency,
u32 counterBits 
) const
inlineprivate

Definition at line 190 of file hpet.cpp.

void CounterHPET::Write64 ( size_t  offset,
u64  value 
) const
inlineprivate

Definition at line 176 of file hpet.cpp.

Member Data Documentation

u32 CounterHPET::m_counterBits
private

Definition at line 226 of file hpet.cpp.

double CounterHPET::m_frequency
private

Definition at line 225 of file hpet.cpp.

volatile void* CounterHPET::m_hpetRegisters
private

Definition at line 224 of file hpet.cpp.


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