- ilock(ip);
- for (i = 0; i < sizeof (ap->ac_comm); i++)
- ap->ac_comm[i] = u.u_comm[i];
- ap->ac_utime = compress((long)u.u_ru.ru_utime.tv_sec);
- ap->ac_stime = compress((long)u.u_ru.ru_stime.tv_sec);
- ap->ac_etime = compress((long)time.tv_sec - u.u_start);
- ap->ac_btime = u.u_start;
- ap->ac_uid = u.u_ruid;
- ap->ac_gid = u.u_rgid;
- ap->ac_mem = 0;
- if (i = u.u_ru.ru_utime.tv_sec + u.u_ru.ru_stime.tv_sec)
- ap->ac_mem =
- (u.u_ru.ru_ixrss + u.u_ru.ru_idrss + u.u_ru.ru_isrss) / i;
- ap->ac_io = compress((long)(u.u_ru.ru_inblock + u.u_ru.ru_oublock));
- if (u.u_ttyp)
- ap->ac_tty = u.u_ttyd;
+ bcopy(p->p_comm, ap->ac_comm, sizeof(ap->ac_comm));
+ ru = &p->p_stats->p_ru;
+ calcru(p, &ut, &st, NULL);
+ t = time;
+ ap->ac_utime = compress(ut.tv_sec, ut.tv_usec);
+ ap->ac_stime = compress(st.tv_sec, st.tv_usec);
+ timevalsub(&t, &p->p_stats->p_start);
+ ap->ac_etime = compress(t.tv_sec, t.tv_usec);
+ ap->ac_btime = p->p_stats->p_start.tv_sec;
+ ap->ac_uid = p->p_cred->p_ruid;
+ ap->ac_gid = p->p_cred->p_rgid;
+ t = st;
+ timevaladd(&t, &ut);
+ if (i = t.tv_sec * hz + t.tv_usec / tick)
+ ap->ac_mem = (ru->ru_ixrss + ru->ru_idrss + ru->ru_isrss) / i;
+ else
+ ap->ac_mem = 0;
+ ap->ac_io = compress(ru->ru_inblock + ru->ru_oublock, (long)0);
+ if (p->p_flag & P_CONTROLT && p->p_session->s_ttyp)
+ ap->ac_tty = p->p_session->s_ttyp->t_dev;