clockintr: add clockqueue_reset_intrclock()
authorcheloha <cheloha@openbsd.org>
Fri, 21 Apr 2023 02:41:06 +0000 (02:41 +0000)
committercheloha <cheloha@openbsd.org>
Fri, 21 Apr 2023 02:41:06 +0000 (02:41 +0000)
commit768b2f7b5e0d18ead9f8125077e00d6a9fcb678e
tree65a7d7c16117a28e7f70eb899d2f32ceb18a4bee
parent1ef7ef0e2ba09c9397863dca21a4392912bc36fc
clockintr: add clockqueue_reset_intrclock()

If a call to clockintr_advance(), clockintr_cancel(), or
clockintr_schedule() changes which clockintr on a given queue is
expiring soonest, we need to rearm the queue's intrclock according
to that most imminent expiration.

Add clockqueue_reset_intrclock() and use it during the aforementioned
scheduling operations if the caller is running on the queue's
controlling CPU.

Scheduling operations are not currently run while CQ_INTRCLOCK is set,
so this patch changes no behavior yet.

clockqueue_reset_intrclock() is only part of the story.  At some point
we will also need to add IPIs to every architecture to handle the case
when the caller is not running on a queue's controlling CPU.
sys/kern/kern_clockintr.c