20 #include "pedigree/kernel/machine/Machine.h" 21 #include "pedigree/kernel/machine/Timer.h" 22 #include "pedigree/kernel/process/Event.h" 23 #include "pedigree/kernel/process/PerProcessorScheduler.h" 24 #include "pedigree/kernel/process/Thread.h" 25 #include "pedigree/kernel/process/eventNumbers.h" 26 #include "pedigree/kernel/processor/Processor.h" 27 #include "pedigree/kernel/processor/ProcessorInformation.h" 28 #include "pedigree/kernel/processor/types.h" 29 #include "pedigree/kernel/time/Time.h" 30 #include "pedigree/kernel/utilities/assert.h" 31 #include "pedigree/kernel/utilities/new" 35 static void delayTimerFired(uint8_t *pBuffer)
46 virtual size_t serialize(uint8_t *pBuffer);
54 void *handle = addAlarm(nanoseconds);
82 uint64_t usecs = nanoseconds / Multiplier::Microsecond;
93 void removeAlarm(
void *handle)
98 Event *pEvent =
reinterpret_cast<Event *
>(handle);
111 DelayTimerEvent::DelayTimerEvent()
112 :
Event(reinterpret_cast<uintptr_t>(&delayTimerFired),
false)
115 DelayTimerEvent::~DelayTimerEvent()
124 bool DelayTimerEvent::unserialize(uint8_t *pBuffer,
DelayTimerEvent &event)
131 return EventNumbers::DelayTimer;
void cullEvent(Event *pEvent)
virtual size_t serialize(uint8_t *pBuffer)
virtual void removeAlarm(class Event *pEvent)=0
virtual size_t getNumber()
virtual Timer * getTimer()=0
static ProcessorInformation & information()
No unwind necessary, carry on as normal.
void setInterrupted(bool b)
virtual void addAlarm(class Event *pEvent, size_t alarmSecs, size_t alarmUsecs=0)=0
UnwindType getUnwindState()
Event(uintptr_t handlerAddress, bool isDeletable, size_t specificNestingLevel=~0UL)