Public Member Functions |
bool | receive (MessageIrq &msg) |
unsigned | alloc_crd () |
unsigned | portal_func (Utcb &utcb, Utcb::Frame &input, bool &free_cap, cap_sel pid) |
uint64 | wallclock_init () |
| PerCpuTimerService (Motherboard &mb, unsigned cap, unsigned cap_order, bool hpet_force_legacy, bool force_pit, unsigned pit_period_us, bool verbose, bool slow_wallclock) |
| StaticReceiver () |
void | debug_dump () |
| Device (const char *debug_name) |
| CapAllocator (unsigned long cap_, unsigned long cap_start, unsigned long cap_order) |
unsigned | alloc_cap (unsigned count=1) |
void | dealloc_cap (unsigned cap, unsigned count=1) |
Static Private Attributes |
static const unsigned | MAX_TIMERS = 24 |
Additional Inherited Members |
unsigned long | _cap_ |
unsigned long | _cap_start |
unsigned long | _cap_order |
enum | {
ENABLE_CNF = (1U << 0),
LEG_RT_CNF = (1U << 1),
LEG_RT_CAP = (1U << 15),
BIT64_CAP = (1U << 13),
FSB_INT_DEL_CAP = (1U << 15),
FSB_INT_EN_CNF = (1U << 14),
MODE32_CNF = (1U << 8),
PER_INT_CAP = (1U << 4),
TYPE_CNF = (1U << 3),
INT_ENB_CNF = (1U << 2),
INT_TYPE_CNF = (1U << 1)
} |
static unsigned long | get_hpet_address (DBus< MessageAcpi > &bus_acpi) |
| Get the HPET address from the ACPI table.
|
static uint16 | get_hpet_rid (DBus< MessageAcpi > &bus_acpi, unsigned block, unsigned comparator) |
| Try to find out HPET routing ID.
|
static bool | check_hpet_present (void *address, unsigned timer, unsigned irq) |
| Check whether some address points to an hpet.
|
Constructor & Destructor Documentation
PerCpuTimerService::PerCpuTimerService |
( |
Motherboard & |
mb, |
|
|
unsigned |
cap, |
|
|
unsigned |
cap_order, |
|
|
bool |
hpet_force_legacy, |
|
|
bool |
force_pit, |
|
|
unsigned |
pit_period_us, |
|
|
bool |
verbose, |
|
|
bool |
slow_wallclock |
|
) |
| |
|
inline |
Member Function Documentation
unsigned PerCpuTimerService::alloc_crd |
( |
| ) |
|
|
inline |
static void PerCpuTimerService::do_per_cpu_worker |
( |
void * |
t, |
|
|
Utcb * |
u |
|
) |
| |
|
inlinestatic |
static void PerCpuTimerService::do_xcpu_wakeup_thread |
( |
void * |
t | ) |
|
|
inlinestatic |
bool PerCpuTimerService::hpet_init |
( |
bool |
hpet_force_legacy | ) |
|
|
inlineprivate |
void PerCpuTimerService::hpet_start |
( |
uint64 |
value | ) |
|
|
inlineprivate |
bool PerCpuTimerService::per_cpu_client_request |
( |
PerCpu * |
per_cpu, |
|
|
ClientData * |
data |
|
) |
| |
|
inlineprivate |
bool PerCpuTimerService::per_cpu_handle_xcpu |
( |
PerCpu * |
per_cpu | ) |
|
|
inlineprivate |
void PerCpuTimerService::per_cpu_worker |
( |
Utcb * |
u | ) |
|
|
inlineprivate |
void PerCpuTimerService::pit_init |
( |
unsigned |
period_us | ) |
|
|
inlineprivate |
bool PerCpuTimerService::receive |
( |
MessageIrq & |
msg | ) |
|
|
inline |
void PerCpuTimerService::update_hpet_estimation |
( |
PerCpu * |
per_cpu | ) |
|
|
inlineprivate |
uint64 PerCpuTimerService::wallclock_init |
( |
| ) |
|
|
inline |
void PerCpuTimerService::xcpu_wakeup_thread |
( |
| ) |
|
|
inlineprivate |
Member Data Documentation
uint32 PerCpuTimerService::_assigned_irqs |
|
private |
uint64 PerCpuTimerService::_nominal_tsc_ticks_per_timer_tick |
|
private |
uint64 PerCpuTimerService::_pit_ticks |
|
private |
HostHpetRegister* PerCpuTimerService::_reg |
|
private |
bool PerCpuTimerService::_slow_wallclock |
|
private |
uint32 PerCpuTimerService::_timer_freq |
|
private |
unsigned PerCpuTimerService::_usable_timers |
|
private |
bool PerCpuTimerService::_verbose |
|
private |
const unsigned PerCpuTimerService::MAX_TIMERS = 24 |
|
staticprivate |
The documentation for this class was generated from the following file: