22#include "pedigree/kernel/compiler.h"
23#include "pedigree/kernel/processor/types.h"
40const Timestamp Second = Millisecond * 1000U;
46static_assert(Microsecond == 1000,
47 "Microsecond conversion multiplier to nanoseconds is incorrect.");
48static_assert(Millisecond == 1000000,
49 "Millisecond conversion multiplier to nanoseconds is incorrect.");
50static_assert(Second == 1000000000,
"Seconds conversion multiplier to nanoseconds is incorrect.");
54const Timestamp Infinity = 0xFFFFFFFFFFFFFFFFULL;
57EXPORTED_PUBLIC
bool delay(
Timestamp nanoseconds);
63EXPORTED_PUBLIC
void* addAlarm(
Timestamp nanoseconds);
66EXPORTED_PUBLIC
void removeAlarm(
void* handle);
68#if HOSTED && PEDIGREE_HOSTED_SMOKE_TESTS
70EXPORTED_PUBLIC
size_t getHostedAlarmCreateCount();
71EXPORTED_PUBLIC
size_t getHostedAlarmDestroyCount();
75EXPORTED_PUBLIC
Timestamp getTime(
bool sync =
false);
78EXPORTED_PUBLIC
Timestamp getTimeNanoseconds(
bool sync =
false);
81EXPORTED_PUBLIC
bool setTimeNanoseconds(
Timestamp value);
84EXPORTED_PUBLIC
bool anchorRealtime(
Timestamp value);
96EXPORTED_PUBLIC CpuTimeSample sampleCpuTime();
102EXPORTED_PUBLIC
Timestamp toUnix(
size_t second,
size_t minute,
size_t hour,
size_t dom,
103 size_t month,
size_t year);