diff options
Diffstat (limited to 'sys/kern/kern_time.c')
-rw-r--r-- | sys/kern/kern_time.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/kern/kern_time.c b/sys/kern/kern_time.c index 8b68ea0..754849a 100644 --- a/sys/kern/kern_time.c +++ b/sys/kern/kern_time.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)kern_time.c 8.1 (Berkeley) 6/10/93 - * $Id: kern_time.c,v 1.33 1997/08/26 00:40:04 bde Exp $ + * $Id: kern_time.c,v 1.34 1997/09/02 20:05:49 bde Exp $ */ #include <sys/param.h> @@ -586,10 +586,12 @@ setitimer(p, uap, retval) return (EINVAL); s = splclock(); if (uap->which == ITIMER_REAL) { - untimeout(realitexpire, (caddr_t)p); + if (timerisset(&p->p_realtimer.it_value)) + untimeout(realitexpire, (caddr_t)p, p->p_ithandle); if (timerisset(&aitv.it_value)) { timevaladd(&aitv.it_value, &time); - timeout(realitexpire, (caddr_t)p, hzto(&aitv.it_value)); + p->p_ithandle = timeout(realitexpire, (caddr_t)p, + hzto(&aitv.it_value)); } p->p_realtimer = aitv; } else @@ -628,8 +630,9 @@ realitexpire(arg) timevaladd(&p->p_realtimer.it_value, &p->p_realtimer.it_interval); if (timercmp(&p->p_realtimer.it_value, &time, >)) { - timeout(realitexpire, (caddr_t)p, - hzto(&p->p_realtimer.it_value) - 1); + p->p_ithandle = + timeout(realitexpire, (caddr_t)p, + hzto(&p->p_realtimer.it_value) - 1); splx(s); return; } |