1*cfd712b4SDavid van Moolenbroek #include <minix/timers.h> 2433d6423SLionel Sambuc 3*cfd712b4SDavid van Moolenbroek /* 4*cfd712b4SDavid van Moolenbroek * Use the current time to check the timers queue list for expired timers. 5433d6423SLionel Sambuc * Run the watchdog functions for all expired timers and deactivate them. 6433d6423SLionel Sambuc * The caller is responsible for scheduling a new alarm if needed. 7433d6423SLionel Sambuc */ 8*cfd712b4SDavid van Moolenbroek int tmrs_exptimers(minix_timer_t ** tmrs,clock_t now,clock_t * new_head)9*cfd712b4SDavid van Moolenbroektmrs_exptimers(minix_timer_t ** tmrs, clock_t now, clock_t * new_head) 10*cfd712b4SDavid van Moolenbroek { 11433d6423SLionel Sambuc minix_timer_t *tp; 12*cfd712b4SDavid van Moolenbroek tmr_func_t func; 13433d6423SLionel Sambuc 14*cfd712b4SDavid van Moolenbroek while ((tp = *tmrs) != NULL && tmr_has_expired(tp, now)) { 15433d6423SLionel Sambuc *tmrs = tp->tmr_next; 16*cfd712b4SDavid van Moolenbroek 17*cfd712b4SDavid van Moolenbroek func = tp->tmr_func; 18*cfd712b4SDavid van Moolenbroek tp->tmr_func = NULL; 19*cfd712b4SDavid van Moolenbroek 20*cfd712b4SDavid van Moolenbroek (*func)(tp->tmr_arg); 21433d6423SLionel Sambuc } 22433d6423SLionel Sambuc 23*cfd712b4SDavid van Moolenbroek if (*tmrs != NULL) { 24*cfd712b4SDavid van Moolenbroek if (new_head != NULL) 25433d6423SLionel Sambuc *new_head = (*tmrs)->tmr_exp_time; 26*cfd712b4SDavid van Moolenbroek return TRUE; 27*cfd712b4SDavid van Moolenbroek } else 28*cfd712b4SDavid van Moolenbroek return FALSE; 29433d6423SLionel Sambuc } 30