sched: Move timer dispatch loop to board code
Rename sched_timer_kick() to sched_timer_dispatch() and move its loop into its callers in the board code. This eliminates the need to export timer_try_set_next() from the board code. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
@@ -13,7 +13,6 @@ uint32_t timer_from_us(uint32_t us);
|
||||
uint8_t timer_is_before(uint32_t time1, uint32_t time2);
|
||||
uint32_t timer_read_time(void);
|
||||
void timer_periodic(void);
|
||||
uint8_t timer_try_set_next(unsigned int next);
|
||||
|
||||
size_t alloc_maxsize(size_t reqsize);
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ static uint32_t timer_repeat_until;
|
||||
// Set the next timer wake time (in absolute clock ticks) or return 1
|
||||
// if the next timer is too close to schedule. Caller must disable
|
||||
// irqs.
|
||||
uint8_t
|
||||
static int
|
||||
timer_try_set_next(unsigned int next)
|
||||
{
|
||||
uint32_t now = timer_read_time();
|
||||
@@ -84,6 +84,20 @@ fail:
|
||||
shutdown("Rescheduled timer in the past");
|
||||
}
|
||||
|
||||
// Invoke timers - called from board irq code.
|
||||
void
|
||||
timer_dispatch_many(void)
|
||||
{
|
||||
for (;;) {
|
||||
uint32_t next_waketime = sched_timer_dispatch();
|
||||
|
||||
// Schedule next timer event (or run next timer if it's ready)
|
||||
int res = timer_try_set_next(next_waketime);
|
||||
if (res)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Periodic background task that temporarily boosts priority of
|
||||
// timers. This helps prioritize timers when tasks are idling.
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user