/* * 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 void balance_scheduler(void); uint32_t monotonic = 0; /* Timer interrupt */ void timer_handler(struct InterruptFrame *frame) { if (cpu->id == 0) monotonic++; if (!current) return; /* Book-keep the scheduler */ Scheduler *s = cpu->scheduler; if (monotonic % 300000 == 0) balance_scheduler(); if (s->timeslice == 0) schedule(); s->timeslice--; }