X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/b34093218d7c5119d10c743d7aa00e4e48e5a71c..ae3d9709645a8b45c3fd7a5dbf5849d8b46ae08d:/usr/src/bin/csh/proc.c diff --git a/usr/src/bin/csh/proc.c b/usr/src/bin/csh/proc.c index fdf3b69401..aa296f62da 100644 --- a/usr/src/bin/csh/proc.c +++ b/usr/src/bin/csh/proc.c @@ -1,4 +1,4 @@ -static char *sccsid = "@(#)proc.c 4.6 (Berkeley) 81/05/03"; +static char *sccsid = "@(#)proc.c 4.8 (Berkeley) 83/02/03"; #include "sh.h" #include "sh.dir.h" @@ -26,19 +26,13 @@ pchild() register int pid; union wait w; int jobflags; -#ifdef VMUNIX - struct vtimes vt; -#endif + struct rusage ru; if (!timesdone) timesdone++, times(&shtimes); loop: pid = wait3(&w.w_status, (setintr ? WNOHANG|WUNTRACED:WNOHANG), -#ifndef VMUNIX - 0); -#else - &vt); -#endif + &ru); if (pid <= 0) { if (errno == EINTR) { errno = 0; @@ -63,15 +57,13 @@ found: time_t oldcutimes, oldcstimes; oldcutimes = shtimes.tms_cutime; oldcstimes = shtimes.tms_cstime; - time(&pp->p_etime); + gettimeofday(&pp->p_etime, (struct timezone *)0); times(&shtimes); pp->p_utime = shtimes.tms_cutime - oldcutimes; pp->p_stime = shtimes.tms_cstime - oldcstimes; } else times(&shtimes); -#ifdef VMUNIX - pp->p_vtimes = vt; -#endif + pp->p_rusage = ru; if (WIFSIGNALED(w)) { if (w.w_termsig == SIGINT) pp->p_flags |= PINTERRUPTED; @@ -82,11 +74,7 @@ found: pp->p_reason = w.w_termsig; } else { pp->p_reason = w.w_retcode; -#ifdef IIASA - if (pp->p_reason >= 3) -#else if (pp->p_reason != 0) -#endif pp->p_flags |= PAEXITED; else pp->p_flags |= PNEXITED; @@ -410,7 +398,7 @@ palloc(pid, t) } pp->p_next = proclist.p_next; proclist.p_next = pp; - time(&pp->p_btime); + gettimeofday(&pp->p_btime, (struct timezone *)0); } padd(t) @@ -632,11 +620,10 @@ prcomd: if (pp->p_flags&PPTIME && !(status&(PSTOPPED|PRUNNING))) { if (linp != linbuf) printf("\n\t"); -#ifndef VMUNIX - ptimes(pp->p_utime, pp->p_stime, pp->p_etime-pp->p_btime); -#else - pvtimes(&zvms, &pp->p_vtimes, pp->p_etime - pp->p_btime); -#endif + { static struct rusage zru; + prusage(&zru, &pp->p_rusage, &pp->p_etime, + &pp->p_btime); + } } if (tp == pp->p_friends) { if (linp != linbuf) @@ -659,30 +646,21 @@ prcomd: ptprint(tp) register struct process *tp; { - time_t tetime = 0; -#ifdef VMUNIX - struct vtimes vmt; -#else - time_t tutime = 0, tstime = 0; -#endif + struct timeval tetime, diff; + static struct timeval ztime; + struct rusage ru; + static struct rusage zru; register struct process *pp = tp; - vmt = zvms; + ru = zru; + tetime = ztime; do { -#ifdef VMUNIX - vmsadd(&vmt, &pp->p_vtimes); -#else - tutime += pp->p_utime; - tstime += pp->p_stime; -#endif - if (pp->p_etime - pp->p_btime > tetime) - tetime = pp->p_etime - pp->p_btime; + ruadd(&ru, &pp->p_rusage); + tvsub(&diff, &pp->p_etime, &pp->p_btime); + if (timercmp(&diff, &tetime, >)) + tetime = diff; } while ((pp = pp->p_friends) != tp); -#ifdef VMUNIX - pvtimes(&zvms, &vmt, tetime); -#else - ptimes(tutime, tstime, tetime); -#endif + prusage(&zru, &ru, &tetime, &ztime); } /*