- struct timeb tb;
- int s;
-
- uap = (struct a *)u.u_ap;
- s = splhigh();
- tb.time = time.tv_sec;
- tb.millitm = time.tv_usec / 1000;
- splx(s);
- tb.timezone = tz.tz_minuteswest;
- tb.dstflag = tz.tz_dsttime;
- u.u_error = copyout((caddr_t)&tb, (caddr_t)uap->tp, sizeof (tb));
-}
-
-oalarm()
-{
- register struct a {
- int deltat;
- } *uap = (struct a *)u.u_ap;
- register struct proc *p = u.u_procp;
- int s = splhigh();
-
- untimeout(realitexpire, (caddr_t)p);
- timerclear(&p->p_realtimer.it_interval);
- u.u_r.r_val1 = 0;
- if (timerisset(&p->p_realtimer.it_value) &&
- timercmp(&p->p_realtimer.it_value, &time, >))
- u.u_r.r_val1 = p->p_realtimer.it_value.tv_sec - time.tv_sec;
- if (uap->deltat == 0) {
- timerclear(&p->p_realtimer.it_value);
- splx(s);
- return;
- }
- p->p_realtimer.it_value = time;
- p->p_realtimer.it_value.tv_sec += uap->deltat;
- timeout(realitexpire, (caddr_t)p, hzto(&p->p_realtimer.it_value));
- splx(s);
-}
-
-onice()
-{
- register struct a {
- int niceness;
- } *uap = (struct a *)u.u_ap;
- register struct proc *p = u.u_procp;
-
- donice(p, (p->p_nice-NZERO)+uap->niceness);
-}
-
-#include "../h/times.h"
-
-otimes()
-{
- register struct a {
- struct tms *tmsb;
- } *uap = (struct a *)u.u_ap;
- struct tms atms;
-
- atms.tms_utime = scale60(&u.u_ru.ru_utime);
- atms.tms_stime = scale60(&u.u_ru.ru_stime);
- atms.tms_cutime = scale60(&u.u_cru.ru_utime);
- atms.tms_cstime = scale60(&u.u_cru.ru_stime);
- u.u_error = copyout((caddr_t)&atms, (caddr_t)uap->tmsb, sizeof (atms));
-}
-
-scale60(tvp)
- register struct timeval *tvp;
-{
-
- return (tvp->tv_sec * 60 + tvp->tv_usec / 16667);
-}
-
-#include "../h/vtimes.h"
-
-ovtimes()
-{
- register struct a {
- struct vtimes *par;
- struct vtimes *chi;
- } *uap = (struct a *)u.u_ap;
- struct vtimes avt;
-
- if (uap->par) {
- getvtimes(&u.u_ru, &avt);
- u.u_error = copyout((caddr_t)&avt, (caddr_t)uap->par,
- sizeof (avt));
- if (u.u_error)
- return;
- }
- if (uap->chi) {
- getvtimes(&u.u_cru, &avt);
- u.u_error = copyout((caddr_t)&avt, (caddr_t)uap->chi,
- sizeof (avt));
- if (u.u_error)
- return;
- }
-}
-
-#include "../machine/psl.h"
-#include "../machine/reg.h"
-
-owait()
-{
- struct rusage ru;
- struct vtimes *vtp, avt;
-
- if ((u.u_ar0[PS] & PSL_ALLCC) != PSL_ALLCC) {
- u.u_error = wait1(0, (struct rusage *)0);
- return;
- }
- vtp = (struct vtimes *)u.u_ar0[R1];
- u.u_error = wait1(u.u_ar0[R0], &ru);
- if (u.u_error)
- return;
- getvtimes(&ru, &avt);
- (void) copyout((caddr_t)&avt, (caddr_t)vtp, sizeof (struct vtimes));
-}
-
-getvtimes(aru, avt)
- register struct rusage *aru;
- register struct vtimes *avt;