/* * This file controls the system clock and contains the functions related to * getting and setting the time from various sources. It keeps a monotonic * clock internally, but can also make use of the tasks' clocks, and the RTC. */ #include #include #include uint32_t monotonic = 0; uint8_t slice[MAX_CPUS] = {0}; /* Timer interrupt */ void timer_handler(struct InterruptFrame *frame) { monotonic++; /* Account timeslices */ slice[CPUID]++; if (!current) return; /* Call scheduler */ if (slice[CPUID] < current->priority) return; slice[CPUID] = 0; schedule(); }