#include "arch/Timer.h" #include "memory/MemoryManager.h" #include "sys/Syscall.h" #include #include Result sys_clock_gettime(Registers*, SyscallArgs args) { clockid_t id = (clockid_t)args[0]; struct timespec* ts = (struct timespec*)args[1]; switch (id) { case CLOCK_MONOTONIC: { if (!MemoryManager::copy_to_user_typed(ts, Timer::monotonic_clock())) return err(EFAULT); break; } case CLOCK_REALTIME: { if (!MemoryManager::copy_to_user_typed(ts, Timer::realtime_clock())) return err(EFAULT); break; } default: return err(EINVAL); } return 0; }