diff options
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/fstat/fstat.c | 37 | ||||
-rw-r--r-- | usr.bin/gcore/aoutcore.c | 45 | ||||
-rw-r--r-- | usr.bin/gcore/gcore.c | 45 | ||||
-rw-r--r-- | usr.bin/systat/pigs.c | 16 | ||||
-rw-r--r-- | usr.bin/top/machine.c | 90 | ||||
-rw-r--r-- | usr.bin/w/extern.h | 6 | ||||
-rw-r--r-- | usr.bin/w/proc_compare.c | 30 | ||||
-rw-r--r-- | usr.bin/w/w.c | 22 |
8 files changed, 136 insertions, 155 deletions
diff --git a/usr.bin/fstat/fstat.c b/usr.bin/fstat/fstat.c index 02da6cc..427611d 100644 --- a/usr.bin/fstat/fstat.c +++ b/usr.bin/fstat/fstat.c @@ -253,7 +253,7 @@ main(argc, argv) putchar('\n'); for (plast = &p[cnt]; p < plast; ++p) { - if (p->kp_proc.p_stat == SZOMB) + if (p->ki_stat == SZOMB) continue; dofiles(p); if (mflg) @@ -298,18 +298,16 @@ dofiles(kp) struct file file; struct filedesc0 filed0; #define filed filed0.fd_fd - struct proc *p = &kp->kp_proc; - struct eproc *ep = &kp->kp_eproc; - Uname = user_from_uid(ep->e_ucred.cr_uid, 0); - Pid = p->p_pid; - Comm = p->p_comm; + Uname = user_from_uid(kp->ki_uid, 0); + Pid = kp->ki_pid; + Comm = kp->ki_comm; - if (p->p_fd == NULL) + if (kp->ki_fd == NULL) return; - if (!KVM_READ(p->p_fd, &filed0, sizeof (filed0))) { + if (!KVM_READ(kp->ki_fd, &filed0, sizeof (filed0))) { dprintf(stderr, "can't read filedesc at %p for pid %d\n", - (void *)p->p_fd, Pid); + (void *)kp->ki_fd, Pid); return; } /* @@ -324,13 +322,13 @@ dofiles(kp) /* * ktrace vnode, if one */ - if (p->p_tracep) - vtrans(p->p_tracep, TRACE, FREAD|FWRITE); + if (kp->ki_tracep) + vtrans(kp->ki_tracep, TRACE, FREAD|FWRITE); /* * text vnode, if one */ - if (p->p_textvp) - vtrans(p->p_textvp, TEXT, FREAD); + if (kp->ki_textvp) + vtrans(kp->ki_textvp, TEXT, FREAD); /* * open files */ @@ -379,24 +377,23 @@ void dommap(kp) struct kinfo_proc *kp; { - struct proc *p = &kp->kp_proc; - struct vmspace vmspace; vm_map_t map; + struct vmspace vmspace; struct vm_map_entry entry; vm_map_entry_t entryp; struct vm_object object; vm_object_t objp; int prot, fflags; - if (!KVM_READ(p->p_vmspace, &vmspace, sizeof(vmspace))) { - dprintf(stderr, "can't read vmspace at %p for pid %d\n", - (void *)p->p_vmspace, Pid); + if (!KVM_READ(kp->ki_vmspace, &vmspace, sizeof(vmspace))) { + dprintf(stderr, + "can't read vmspace at %p for pid %d\n", + (void *)kp->ki_vmspace, Pid); return; } - map = &vmspace.vm_map; - for (entryp = map->header.next; entryp != &p->p_vmspace->vm_map.header; + for (entryp = map->header.next; entryp != &vmspace.vm_map.header; entryp = entry.next) { if (!KVM_READ(entryp, &entry, sizeof(entry))) { dprintf(stderr, diff --git a/usr.bin/gcore/aoutcore.c b/usr.bin/gcore/aoutcore.c index 6ad9568..0e443b8 100644 --- a/usr.bin/gcore/aoutcore.c +++ b/usr.bin/gcore/aoutcore.c @@ -80,15 +80,13 @@ static const char rcsid[] = #include "extern.h" static void core __P((int, int, struct kinfo_proc *)); -static void datadump __P((int, int, struct proc *, u_long, int)); +static void datadump __P((int, int, struct kinfo_proc *, u_long, int)); static void killed __P((int)); static void restart_target __P((void)); static void usage __P((void)) __dead2; -static void userdump __P((int, struct proc *, u_long, int)); +static void userdump __P((int, struct kinfo_proc *, u_long, int)); kvm_t *kd; -/* XXX undocumented routine, should be in kvm.h? */ -ssize_t kvm_uread __P((kvm_t *, const struct proc *, u_long, char *, size_t)); static int data_offset; static pid_t pid; @@ -98,7 +96,6 @@ main(argc, argv) int argc; char *argv[]; { - register struct proc *p; struct kinfo_proc *ki = NULL; struct exec exec; int ch, cnt, efd, fd, sflag, uid; @@ -164,23 +161,22 @@ main(argc, argv) if (ki == NULL || cnt != 1) errx(1, "%d: not found", pid); - p = &ki->kp_proc; - if (ki->kp_eproc.e_pcred.p_ruid != uid && uid != 0) + if (ki->ki_ruid != uid && uid != 0) errx(1, "%d: not owner", pid); - if (p->p_stat == SZOMB) + if (ki->ki_stat == SZOMB) errx(1, "%d: zombie", pid); - if (p->p_flag & P_WEXIT) + if (ki->ki_flag & P_WEXIT) errx(1, "%d: process exiting", pid); - if (p->p_flag & P_SYSTEM) /* Swapper or pagedaemon. */ + if (ki->ki_flag & P_SYSTEM) /* Swapper or pagedaemon. */ errx(1, "%d: system process", pid); - if (exec.a_text != ptoa(ki->kp_eproc.e_vm.vm_tsize)) + if (exec.a_text != ptoa(ki->ki_tsize)) errx(1, "The executable %s does not belong to" " process %d!\n" "Text segment size (in bytes): executable %ld," " process %d", binfile, pid, exec.a_text, - ptoa(ki->kp_eproc.e_vm.vm_tsize)); + ptoa(ki->ki_tsize)); data_offset = N_DATOFF(exec); } else if (IS_ELF(*(Elf_Ehdr *)&exec)) { is_aout = 0; @@ -228,14 +224,13 @@ core(efd, fd, ki) struct user user; char ubytes[ctob(UPAGES)]; } uarea; - struct proc *p = &ki->kp_proc; - int tsize = ki->kp_eproc.e_vm.vm_tsize; - int dsize = ki->kp_eproc.e_vm.vm_dsize; - int ssize = ki->kp_eproc.e_vm.vm_ssize; + int tsize = ki->ki_tsize; + int dsize = ki->ki_dsize; + int ssize = ki->ki_ssize; int cnt; /* Read in user struct */ - cnt = kvm_read(kd, (u_long)p->p_addr, &uarea, sizeof(uarea)); + cnt = kvm_read(kd, (u_long)ki->ki_addr, &uarea, sizeof(uarea)); if (cnt != sizeof(uarea)) errx(1, "read user structure: %s", cnt > 0 ? strerror(EIO) : strerror(errno)); @@ -253,20 +248,20 @@ core(efd, fd, ki) cnt > 0 ? strerror(EIO) : strerror(errno)); /* Dump data segment */ - datadump(efd, fd, p, USRTEXT + ctob(tsize), dsize); + datadump(efd, fd, ki, USRTEXT + ctob(tsize), dsize); /* Dump stack segment */ - userdump(fd, p, USRSTACK - ctob(ssize), ssize); + userdump(fd, ki, USRSTACK - ctob(ssize), ssize); /* Dump machine dependent portions of the core. */ md_core(kd, fd, ki); } void -datadump(efd, fd, p, addr, npage) +datadump(efd, fd, kp, addr, npage) register int efd; register int fd; - struct proc *p; + struct kinfo_proc *kp; register u_long addr; register int npage; { @@ -275,7 +270,7 @@ datadump(efd, fd, p, addr, npage) delta = data_offset - addr; while (--npage >= 0) { - cc = kvm_uread(kd, p, addr, buffer, PAGE_SIZE); + cc = kvm_uread(kd, kp, addr, buffer, PAGE_SIZE); if (cc != PAGE_SIZE) { /* Try to read the page from the executable. */ if (lseek(efd, (off_t)addr + delta, SEEK_SET) == -1) @@ -312,9 +307,9 @@ restart_target() } void -userdump(fd, p, addr, npage) +userdump(fd, kp, addr, npage) register int fd; - struct proc *p; + struct kinfo_proc *kp; register u_long addr; register int npage; { @@ -322,7 +317,7 @@ userdump(fd, p, addr, npage) char buffer[PAGE_SIZE]; while (--npage >= 0) { - cc = kvm_uread(kd, p, addr, buffer, PAGE_SIZE); + cc = kvm_uread(kd, kp, addr, buffer, PAGE_SIZE); if (cc != PAGE_SIZE) /* Could be an untouched fill-with-zero page. */ bzero(buffer, PAGE_SIZE); diff --git a/usr.bin/gcore/gcore.c b/usr.bin/gcore/gcore.c index 6ad9568..0e443b8 100644 --- a/usr.bin/gcore/gcore.c +++ b/usr.bin/gcore/gcore.c @@ -80,15 +80,13 @@ static const char rcsid[] = #include "extern.h" static void core __P((int, int, struct kinfo_proc *)); -static void datadump __P((int, int, struct proc *, u_long, int)); +static void datadump __P((int, int, struct kinfo_proc *, u_long, int)); static void killed __P((int)); static void restart_target __P((void)); static void usage __P((void)) __dead2; -static void userdump __P((int, struct proc *, u_long, int)); +static void userdump __P((int, struct kinfo_proc *, u_long, int)); kvm_t *kd; -/* XXX undocumented routine, should be in kvm.h? */ -ssize_t kvm_uread __P((kvm_t *, const struct proc *, u_long, char *, size_t)); static int data_offset; static pid_t pid; @@ -98,7 +96,6 @@ main(argc, argv) int argc; char *argv[]; { - register struct proc *p; struct kinfo_proc *ki = NULL; struct exec exec; int ch, cnt, efd, fd, sflag, uid; @@ -164,23 +161,22 @@ main(argc, argv) if (ki == NULL || cnt != 1) errx(1, "%d: not found", pid); - p = &ki->kp_proc; - if (ki->kp_eproc.e_pcred.p_ruid != uid && uid != 0) + if (ki->ki_ruid != uid && uid != 0) errx(1, "%d: not owner", pid); - if (p->p_stat == SZOMB) + if (ki->ki_stat == SZOMB) errx(1, "%d: zombie", pid); - if (p->p_flag & P_WEXIT) + if (ki->ki_flag & P_WEXIT) errx(1, "%d: process exiting", pid); - if (p->p_flag & P_SYSTEM) /* Swapper or pagedaemon. */ + if (ki->ki_flag & P_SYSTEM) /* Swapper or pagedaemon. */ errx(1, "%d: system process", pid); - if (exec.a_text != ptoa(ki->kp_eproc.e_vm.vm_tsize)) + if (exec.a_text != ptoa(ki->ki_tsize)) errx(1, "The executable %s does not belong to" " process %d!\n" "Text segment size (in bytes): executable %ld," " process %d", binfile, pid, exec.a_text, - ptoa(ki->kp_eproc.e_vm.vm_tsize)); + ptoa(ki->ki_tsize)); data_offset = N_DATOFF(exec); } else if (IS_ELF(*(Elf_Ehdr *)&exec)) { is_aout = 0; @@ -228,14 +224,13 @@ core(efd, fd, ki) struct user user; char ubytes[ctob(UPAGES)]; } uarea; - struct proc *p = &ki->kp_proc; - int tsize = ki->kp_eproc.e_vm.vm_tsize; - int dsize = ki->kp_eproc.e_vm.vm_dsize; - int ssize = ki->kp_eproc.e_vm.vm_ssize; + int tsize = ki->ki_tsize; + int dsize = ki->ki_dsize; + int ssize = ki->ki_ssize; int cnt; /* Read in user struct */ - cnt = kvm_read(kd, (u_long)p->p_addr, &uarea, sizeof(uarea)); + cnt = kvm_read(kd, (u_long)ki->ki_addr, &uarea, sizeof(uarea)); if (cnt != sizeof(uarea)) errx(1, "read user structure: %s", cnt > 0 ? strerror(EIO) : strerror(errno)); @@ -253,20 +248,20 @@ core(efd, fd, ki) cnt > 0 ? strerror(EIO) : strerror(errno)); /* Dump data segment */ - datadump(efd, fd, p, USRTEXT + ctob(tsize), dsize); + datadump(efd, fd, ki, USRTEXT + ctob(tsize), dsize); /* Dump stack segment */ - userdump(fd, p, USRSTACK - ctob(ssize), ssize); + userdump(fd, ki, USRSTACK - ctob(ssize), ssize); /* Dump machine dependent portions of the core. */ md_core(kd, fd, ki); } void -datadump(efd, fd, p, addr, npage) +datadump(efd, fd, kp, addr, npage) register int efd; register int fd; - struct proc *p; + struct kinfo_proc *kp; register u_long addr; register int npage; { @@ -275,7 +270,7 @@ datadump(efd, fd, p, addr, npage) delta = data_offset - addr; while (--npage >= 0) { - cc = kvm_uread(kd, p, addr, buffer, PAGE_SIZE); + cc = kvm_uread(kd, kp, addr, buffer, PAGE_SIZE); if (cc != PAGE_SIZE) { /* Try to read the page from the executable. */ if (lseek(efd, (off_t)addr + delta, SEEK_SET) == -1) @@ -312,9 +307,9 @@ restart_target() } void -userdump(fd, p, addr, npage) +userdump(fd, kp, addr, npage) register int fd; - struct proc *p; + struct kinfo_proc *kp; register u_long addr; register int npage; { @@ -322,7 +317,7 @@ userdump(fd, p, addr, npage) char buffer[PAGE_SIZE]; while (--npage >= 0) { - cc = kvm_uread(kd, p, addr, buffer, PAGE_SIZE); + cc = kvm_uread(kd, kp, addr, buffer, PAGE_SIZE); if (cc != PAGE_SIZE) /* Could be an untouched fill-with-zero page. */ bzero(buffer, PAGE_SIZE); diff --git a/usr.bin/systat/pigs.c b/usr.bin/systat/pigs.c index 3443ede..1086920 100644 --- a/usr.bin/systat/pigs.c +++ b/usr.bin/systat/pigs.c @@ -44,7 +44,6 @@ static char sccsid[] = "@(#)pigs.c 8.2 (Berkeley) 9/23/93"; #include <sys/param.h> #include <sys/dkstat.h> #include <sys/time.h> -#include <sys/proc.h> #include <sys/user.h> #include <sys/sysctl.h> @@ -91,7 +90,6 @@ void showpigs() { register int i, j, y, k; - struct eproc *ep; float total; int factor; char *uname, *pname, pidname[30]; @@ -120,9 +118,9 @@ showpigs() pname = "<idle>"; } else { - ep = &pt[k].pt_kp->kp_eproc; - uname = (char *)user_from_uid(ep->e_ucred.cr_uid, 0); - pname = pt[k].pt_kp->kp_proc.p_comm; + uname = (char *) + user_from_uid(pt[k].pt_kp->ki_uid, 0); + pname = pt[k].pt_kp->ki_comm; } wmove(wnd, y, 0); wclrtoeol(wnd); @@ -174,7 +172,6 @@ fetchpigs() { register int i; register float time; - register struct proc *pp; register float *pctp; struct kinfo_proc *kpp; long ctime[CPUSTATES]; @@ -203,13 +200,12 @@ fetchpigs() */ for (i = 0; i < nproc; i++) { pt[i].pt_kp = &kpp[i]; - pp = &kpp[i].kp_proc; pctp = &pt[i].pt_pctcpu; - time = pp->p_swtime; - if (time == 0 || (pp->p_flag & P_INMEM) == 0) + time = kpp[i].ki_swtime; + if (time == 0 || (kpp[i].ki_flag & P_INMEM) == 0) *pctp = 0; else - *pctp = ((double) pp->p_pctcpu / + *pctp = ((double) kpp[i].ki_pctcpu / fscale) / (1.0 - exp(time * lccpu)); } /* diff --git a/usr.bin/top/machine.c b/usr.bin/top/machine.c index 7988183..3e4073d 100644 --- a/usr.bin/top/machine.c +++ b/usr.bin/top/machine.c @@ -75,16 +75,12 @@ struct handle /* declarations for load_avg */ #include "loadavg.h" -#define PP(pp, field) ((pp)->kp_proc . field) -#define EP(pp, field) ((pp)->kp_eproc . field) -#define VP(pp, field) ((pp)->kp_eproc.e_vm . field) - /* define what weighted cpu is. */ -#define weighted_cpu(pct, pp) (PP((pp), p_swtime) == 0 ? 0.0 : \ - ((pct) / (1.0 - exp(PP((pp), p_swtime) * logcpu)))) +#define weighted_cpu(pct, pp) ((pp)->ki_swtime == 0 ? 0.0 : \ + ((pct) / (1.0 - exp((pp)->ki_swtime * logcpu)))) /* what we consider to be process size: */ -#define PROCSIZE(pp) (VP((pp), vm_map.size) / 1024) +#define PROCSIZE(pp) ((pp)->ki_size / 1024) /* definitions for indices in the nlist array */ @@ -501,16 +497,16 @@ int (*compare)(); * status field. Processes with P_SYSTEM set are system * processes---these get ignored unless show_sysprocs is set. */ - if (PP(pp, p_stat) != 0 && - (show_self != PP(pp, p_pid)) && - (show_system || ((PP(pp, p_flag) & P_SYSTEM) == 0))) + if (pp->ki_stat != 0 && + (show_self != pp->ki_pid) && + (show_system || ((pp->ki_flag & P_SYSTEM) == 0))) { total_procs++; - process_states[(unsigned char) PP(pp, p_stat)]++; - if ((PP(pp, p_stat) != SZOMB) && - (show_idle || (PP(pp, p_pctcpu) != 0) || - (PP(pp, p_stat) == SRUN)) && - (!show_uid || EP(pp, e_pcred.p_ruid) == (uid_t)sel->uid)) + process_states[(unsigned char) pp->ki_stat]++; + if ((pp->ki_stat != SZOMB) && + (show_idle || (pp->ki_pctcpu != 0) || + (pp->ki_stat == SRUN)) && + (!show_uid || pp->ki_ruid == (uid_t)sel->uid)) { *prefp++ = pp; active_procs++; @@ -555,12 +551,12 @@ char *(*get_userid)(); hp->remaining--; /* get the process's command name */ - if ((PP(pp, p_flag) & P_INMEM) == 0) { + if ((pp->ki_flag & P_INMEM) == 0) { /* * Print swapped processes as <pname> */ - char *comm = PP(pp, p_comm); -#define COMSIZ sizeof(PP(pp, p_comm)) + char *comm = pp->ki_comm; +#define COMSIZ sizeof(pp->ki_comm) char buf[COMSIZ]; (void) strncpy(buf, comm, COMSIZ); comm[0] = '<'; @@ -575,28 +571,28 @@ char *(*get_userid)(); * time includes the interrupt time although that is not wanted here. * ps(1) is similarly sloppy. */ - cputime = (PP(pp, p_runtime) + 500000) / 1000000; + cputime = (pp->ki_runtime + 500000) / 1000000; /* calculate the base for cpu percentages */ - pct = pctdouble(PP(pp, p_pctcpu)); + pct = pctdouble(pp->ki_pctcpu); /* generate "STATE" field */ - switch (state = PP(pp, p_stat)) { + switch (state = pp->ki_stat) { case SRUN: - if (smpmode && PP(pp, p_oncpu) != 0xff) - sprintf(status, "CPU%d", PP(pp, p_oncpu)); + if (smpmode && pp->ki_oncpu != 0xff) + sprintf(status, "CPU%d", pp->ki_oncpu); else strcpy(status, "RUN"); break; case SMTX: - if (PP(pp, p_mtxname) != NULL) { - sprintf(status, "*%.6s", EP(pp, e_mtxname)); + if (pp->ki_kiflag & KI_MTXBLOCK) { + sprintf(status, "*%.6s", pp->ki_mtxname); break; } /* fall through */ case SSLEEP: - if (PP(pp, p_wmesg) != NULL) { - sprintf(status, "%.6s", EP(pp, e_wmesg)); + if (pp->ki_wmesg != NULL) { + sprintf(status, "%.6s", pp->ki_wmesg); break; } /* fall through */ @@ -613,32 +609,32 @@ char *(*get_userid)(); /* format this entry */ sprintf(fmt, smpmode ? smp_Proc_format : up_Proc_format, - PP(pp, p_pid), + pp->ki_pid, namelength, namelength, - (*get_userid)(EP(pp, e_pcred.p_ruid)), - PP(pp, p_priority) - PZERO, + (*get_userid)(pp->ki_ruid), + pp->ki_priority - PZERO, /* * normal time -> nice value -20 - +20 * real time 0 - 31 -> nice value -52 - -21 * idle time 0 - 31 -> nice value +21 - +52 */ - (PP(pp, p_rtprio.type) == RTP_PRIO_NORMAL ? - PP(pp, p_nice) - NZERO : - (RTP_PRIO_IS_REALTIME(PP(pp, p_rtprio.type)) ? - (PRIO_MIN - 1 - RTP_PRIO_MAX + PP(pp, p_rtprio.prio)) : - (PRIO_MAX + 1 + PP(pp, p_rtprio.prio)))), + (pp->ki_rtprio.type == RTP_PRIO_NORMAL ? + pp->ki_nice - NZERO : + (RTP_PRIO_IS_REALTIME(pp->ki_rtprio.type) ? + (PRIO_MIN - 1 - RTP_PRIO_MAX + pp->ki_rtprio.prio) : + (PRIO_MAX + 1 + pp->ki_rtprio.prio))), format_k2(PROCSIZE(pp)), - format_k2(pagetok(VP(pp, vm_rssize))), + format_k2(pagetok(pp->ki_rssize)), status, - smpmode ? PP(pp, p_lastcpu) : 0, + smpmode ? pp->ki_lastcpu : 0, format_time(cputime), 100.0 * weighted_cpu(pct, pp), 100.0 * pct, screen_width > cmdlengthdelta ? screen_width - cmdlengthdelta : 0, - printable(PP(pp, p_comm))); + printable(pp->ki_comm)); /* return the result */ return(fmt); @@ -741,22 +737,22 @@ static unsigned char sorted_state[] = #define ORDERKEY_PCTCPU \ - if (lresult = (long) PP(p2, p_pctcpu) - (long) PP(p1, p_pctcpu), \ + if (lresult = (long) p2->ki_pctcpu - (long) p1->ki_pctcpu, \ (result = lresult > 0 ? 1 : lresult < 0 ? -1 : 0) == 0) #define ORDERKEY_CPTICKS \ - if ((result = PP(p2, p_runtime) > PP(p1, p_runtime) ? 1 : \ - PP(p2, p_runtime) < PP(p1, p_runtime) ? -1 : 0) == 0) + if ((result = p2->ki_runtime > p1->ki_runtime ? 1 : \ + p2->ki_runtime < p1->ki_runtime ? -1 : 0) == 0) #define ORDERKEY_STATE \ - if ((result = sorted_state[(unsigned char) PP(p2, p_stat)] - \ - sorted_state[(unsigned char) PP(p1, p_stat)]) == 0) + if ((result = sorted_state[(unsigned char) p2->ki_stat] - \ + sorted_state[(unsigned char) p1->ki_stat]) == 0) #define ORDERKEY_PRIO \ - if ((result = PP(p2, p_priority) - PP(p1, p_priority)) == 0) + if ((result = p2->ki_priority - p1->ki_priority) == 0) #define ORDERKEY_RSSIZE \ - if ((result = VP(p2, vm_rssize) - VP(p1, vm_rssize)) == 0) + if ((result = p2->ki_rssize - p1->ki_rssize) == 0) #define ORDERKEY_MEM \ if ( (result = PROCSIZE(p2) - PROCSIZE(p1)) == 0 ) @@ -948,9 +944,9 @@ int pid; while (--cnt >= 0) { pp = *prefp++; - if (PP(pp, p_pid) == (pid_t)pid) + if (pp->ki_pid == (pid_t)pid) { - return((int)EP(pp, e_pcred.p_ruid)); + return((int)pp->ki_ruid); } } return(-1); diff --git a/usr.bin/w/extern.h b/usr.bin/w/extern.h index 7cb4ed0..7037f9a 100644 --- a/usr.bin/w/extern.h +++ b/usr.bin/w/extern.h @@ -31,9 +31,11 @@ * SUCH DAMAGE. * * @(#)extern.h 8.1 (Berkeley) 6/6/93 + * $FreeBSD$ */ -struct proc; + +struct kinfo_proc; void pr_attime __P((time_t *, time_t *)); int pr_idle __P((time_t)); -int proc_compare __P((struct proc *, struct proc *)); +int proc_compare __P((struct kinfo_proc *, struct kinfo_proc *)); diff --git a/usr.bin/w/proc_compare.c b/usr.bin/w/proc_compare.c index e95359c..a94a6b2 100644 --- a/usr.bin/w/proc_compare.c +++ b/usr.bin/w/proc_compare.c @@ -32,12 +32,16 @@ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)proc_compare.c 8.2 (Berkeley) 9/23/93"; +#endif +static const char rcsid[] = + "$FreeBSD$"; #endif /* not lint */ #include <sys/param.h> #include <sys/time.h> -#include <sys/proc.h> +#include <sys/user.h> #include "extern.h" @@ -60,7 +64,7 @@ static char sccsid[] = "@(#)proc_compare.c 8.2 (Berkeley) 9/23/93"; * TODO - consider whether pctcpu should be used. */ -#define ISRUN(p) (((p)->p_stat == SRUN) || ((p)->p_stat == SIDL)) +#define ISRUN(p) (((p)->ki_stat == SRUN) || ((p)->ki_stat == SIDL)) #define TESTAB(a, b) ((a)<<1 | (b)) #define ONLYA 2 #define ONLYB 1 @@ -68,7 +72,7 @@ static char sccsid[] = "@(#)proc_compare.c 8.2 (Berkeley) 9/23/93"; int proc_compare(p1, p2) - register struct proc *p1, *p2; + struct kinfo_proc *p1, *p2; { if (p1 == NULL) @@ -85,36 +89,36 @@ proc_compare(p1, p2) /* * tie - favor one with highest recent cpu utilization */ - if (p2->p_estcpu > p1->p_estcpu) + if (p2->ki_estcpu > p1->ki_estcpu) return (1); - if (p1->p_estcpu > p2->p_estcpu) + if (p1->ki_estcpu > p2->ki_estcpu) return (0); - return (p2->p_pid > p1->p_pid); /* tie - return highest pid */ + return (p2->ki_pid > p1->ki_pid); /* tie - return highest pid */ } /* * weed out zombies */ - switch (TESTAB(p1->p_stat == SZOMB, p2->p_stat == SZOMB)) { + switch (TESTAB(p1->ki_stat == SZOMB, p2->ki_stat == SZOMB)) { case ONLYA: return (1); case ONLYB: return (0); case BOTH: - return (p2->p_pid > p1->p_pid); /* tie - return highest pid */ + return (p2->ki_pid > p1->ki_pid); /* tie - return highest pid */ } /* * pick the one with the smallest sleep time */ - if (p2->p_slptime > p1->p_slptime) + if (p2->ki_slptime > p1->ki_slptime) return (0); - if (p1->p_slptime > p2->p_slptime) + if (p1->ki_slptime > p2->ki_slptime) return (1); /* * favor one sleeping in a non-interruptible sleep */ - if (p1->p_flag & P_SINTR && (p2->p_flag & P_SINTR) == 0) + if (p1->ki_flag & P_SINTR && (p2->ki_flag & P_SINTR) == 0) return (1); - if (p2->p_flag & P_SINTR && (p1->p_flag & P_SINTR) == 0) + if (p2->ki_flag & P_SINTR && (p1->ki_flag & P_SINTR) == 0) return (0); - return (p2->p_pid > p1->p_pid); /* tie - return highest pid */ + return (p2->ki_pid > p1->ki_pid); /* tie - return highest pid */ } diff --git a/usr.bin/w/w.c b/usr.bin/w/w.c index d91aa8c..0ead030 100644 --- a/usr.bin/w/w.c +++ b/usr.bin/w/w.c @@ -114,7 +114,7 @@ struct entry { struct kinfo_proc *dkp; /* debug option proc list */ } *ep, *ehead = NULL, **nextp = &ehead; -#define debugproc(p) *((struct kinfo_proc **)&(p)->kp_eproc.e_spare[0]) +#define debugproc(p) *((struct kinfo_proc **)&(p)->ki_spare[0]) static void pr_header __P((time_t *, int)); static struct stat *ttystat __P((char *, int)); @@ -273,27 +273,23 @@ main(argc, argv) if ((kp = kvm_getprocs(kd, KERN_PROC_ALL, 0, &nentries)) == NULL) err(1, "%s", kvm_geterr(kd)); for (i = 0; i < nentries; i++, kp++) { - struct proc *pr = &kp->kp_proc; - struct eproc *e; - - if (pr->p_stat == SIDL || pr->p_stat == SZOMB) + if (kp->ki_stat == SIDL || kp->ki_stat == SZOMB) continue; - e = &kp->kp_eproc; for (ep = ehead; ep != NULL; ep = ep->next) { - if (ep->tdev == e->e_tdev) { + if (ep->tdev == kp->ki_tdev) { /* * proc is associated with this terminal */ - if (ep->kp == NULL && e->e_pgid == e->e_tpgid) { + if (ep->kp == NULL && kp->ki_pgid == kp->ki_tpgid) { /* * Proc is 'most interesting' */ - if (proc_compare(&ep->kp->kp_proc, pr)) + if (proc_compare(ep->kp, kp)) ep->kp = kp; } /* * Proc debug option info; add to debug - * list using kinfo_proc kp_eproc.e_spare + * list using kinfo_proc ki_spare[0] * as next pointer; ptr to ptr avoids the * ptr = long assumption. */ @@ -318,7 +314,7 @@ main(argc, argv) continue; } ep->args = fmt_argv(kvm_getargv(kd, ep->kp, argwidth), - ep->kp->kp_proc.p_comm, MAXCOMLEN); + ep->kp->ki_comm, MAXCOMLEN); if (ep->args == NULL) err(1, NULL); } @@ -389,11 +385,11 @@ main(argc, argv) char *ptr; ptr = fmt_argv(kvm_getargv(kd, dkp, argwidth), - dkp->kp_proc.p_comm, MAXCOMLEN); + dkp->ki_comm, MAXCOMLEN); if (ptr == NULL) ptr = "-"; (void)printf("\t\t%-9d %s\n", - dkp->kp_proc.p_pid, ptr); + dkp->ki_pid, ptr); } } (void)printf("%-*.*s %-*.*s %-*.*s ", |