/* * 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) { if (CPUID == 0) monotonic++; if (!current) return; slice[CPUID]++; /* Call scheduler */ if (slice[CPUID] < (current->priority * 10)) return; slice[CPUID] = 0; schedule(); }