- else
- timevalsub(&aitv.it_value, &time);
- } else
- aitv =p->p_stats->p_timer[uap->which];
- splx(s);
- return(copyout((caddr_t)&aitv, (caddr_t)uap->itv,
- sizeof (struct itimerval)));
+ else {
+ aitv.it_value = p->p_rtime;
+ timevalsub(&aitv.it_value, &now);
+ }
+ }
+ else
+ timerclear(&aitv.it_value);
+ }
+ else
+ aitv = p->p_stats->p_timer[uap->which];
+
+ if (IS_64BIT_PROCESS(p)) {
+ struct user_itimerval user_itv;
+ user_itv.it_interval.tv_sec = aitv.it_interval.tv_sec;
+ user_itv.it_interval.tv_usec = aitv.it_interval.tv_usec;
+ user_itv.it_value.tv_sec = aitv.it_value.tv_sec;
+ user_itv.it_value.tv_usec = aitv.it_value.tv_usec;
+ return (copyout((caddr_t)&user_itv, uap->itv, sizeof (struct user_itimerval)));
+ } else {
+ return (copyout((caddr_t)&aitv, uap->itv, sizeof (struct itimerval)));
+ }