2005-04-21 16:53:53 +02:00
|
|
|
#include "timers.h"
|
|
|
|
|
|
|
|
/*===========================================================================*
|
|
|
|
* tmrs_clrtimer *
|
|
|
|
*===========================================================================*/
|
2005-06-17 15:47:29 +02:00
|
|
|
clock_t tmrs_clrtimer(tmrs, tp, new_head)
|
2005-04-21 16:53:53 +02:00
|
|
|
timer_t **tmrs; /* pointer to timers queue */
|
|
|
|
timer_t *tp; /* timer to be removed */
|
2005-06-17 15:47:29 +02:00
|
|
|
clock_t *new_head;
|
2005-04-21 16:53:53 +02:00
|
|
|
{
|
|
|
|
/* Deactivate a timer and remove it from the timers queue.
|
|
|
|
*/
|
|
|
|
timer_t **atp;
|
|
|
|
struct proc *p;
|
2005-06-17 15:47:29 +02:00
|
|
|
clock_t old_head = 0;
|
|
|
|
|
|
|
|
if(*tmrs)
|
|
|
|
old_head = (*tmrs)->tmr_exp_time;
|
|
|
|
else
|
|
|
|
old_head = 0;
|
2005-04-21 16:53:53 +02:00
|
|
|
|
|
|
|
tp->tmr_exp_time = TMR_NEVER;
|
|
|
|
|
|
|
|
for (atp = tmrs; *atp != NULL; atp = &(*atp)->tmr_next) {
|
|
|
|
if (*atp == tp) {
|
|
|
|
*atp = tp->tmr_next;
|
2005-06-17 15:47:29 +02:00
|
|
|
break;
|
2005-04-21 16:53:53 +02:00
|
|
|
}
|
|
|
|
}
|
2005-06-17 15:47:29 +02:00
|
|
|
|
|
|
|
if(new_head) {
|
|
|
|
if(*tmrs)
|
|
|
|
*new_head = (*tmrs)->tmr_exp_time;
|
|
|
|
else
|
|
|
|
*new_head = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
return old_head;
|
2005-04-21 16:53:53 +02:00
|
|
|
}
|
|
|
|
|