8#ifndef KERNEL_MACHINE_VIRT_TIMER_H
9#define KERNEL_MACHINE_VIRT_TIMER_H
11#include "pedigree/kernel/machine/SplitIrqHandler.h"
12#include "pedigree/kernel/machine/Timer.h"
13#include "pedigree/kernel/machine/TimerHandlerRegistry.h"
14#include "pedigree/kernel/utilities/List.h"
44 void addAlarm(
Event* event,
size_t seconds,
size_t microseconds = 0)
override;
58 HardStageDisposition
hardIrq(irq_id_t number, InterruptState& state,
size_t& work)
override;
63 static uint64_t counter();
64 uint64_t ticksToNanoseconds(uint64_t ticks)
const;
65 void processElapsed(uint64_t nanoseconds);
66 void updateCivilTime(uint64_t seconds);
71 uint64_t m_RtcBaseCount;
72 uint64_t m_RtcBaseSeconds;
73 uint64_t m_ElapsedSinceSync;
74 uint32_t m_IntervalTicks;
void removeAlarm(Event *event) override
size_t getYear() override
void threadedIrq(size_t work) override
uint8_t getDayOfWeek() override
void addAlarm(Event *event, size_t seconds, size_t microseconds=0) override
HardStageDisposition hardIrq(irq_id_t number, InterruptState &state, size_t &work) override
Time::Timestamp getUnixTimestamp() override
void synchronise(bool tohw=false) override
Synchronises the timer with the hardware. Useful for updating the fields returned by get*,...
uint64_t getTickCountNano() override
uint64_t getTickCount() override
bool quiesceIrqSources() override
uint8_t getHour() override
uint8_t getMinute() override
uint8_t getSecond() override
void rearmIrqSources(size_t work) override
uint64_t getNanosecond() override
uint8_t getDayOfMonth() override
uint64_t getTickCountNanoFast() override
uint8_t getMonth() override