5export module zxfoundation.sys.timer.core;
6import zxfoundation.sys.timer.types;
7import zxfoundation.base.types;
8import arch.s390x.cpu.irq;
14namespace zxfoundation::sys::timer {
17 [[nodiscard]]
constexpr auto ns_to_tod(u64 ns)
noexcept -> u64 {
18 return static_cast<u64>(
19 (
static_cast<u128>(ns) * 4096ULL) / 1000ULL);
23 [[nodiscard]]
constexpr auto tod_to_ns(u64 tod)
noexcept -> u64 {
24 return static_cast<u64>(
25 (
static_cast<u128>(tod) * 1000ULL) / 4096ULL);
29 constexpr auto init_ap(u16 cpu_id)
noexcept ->
void { discard_value cpu_id; }
32 [[nodiscard]]
auto timer_add(kernel_timer& t)
noexcept
33 -> std::expected<
void, lib::kernel_error>;
36 [[nodiscard]]
auto timer_cancel(kernel_timer& t)
noexcept
37 -> std::expected<
void, lib::kernel_error>;
40 auto timer_interrupt()
noexcept ->
void;
43 auto init()
noexcept ->
void;