Deleted Added
full compact
26c26
< * $FreeBSD: head/usr.bin/procstat/procstat_files.c 181905 2008-08-20 08:31:58Z ed $
---
> * $FreeBSD: head/usr.bin/procstat/procstat_files.c 185548 2008-12-02 06:50:26Z peter $
43a44
> #include <libutil.h>
137,138c138
< int error, name[4];
< unsigned int i;
---
> int i, cnt;
140d139
< size_t len;
147,172c146,149
< name[0] = CTL_KERN;
< name[1] = KERN_PROC;
< name[2] = KERN_PROC_FILEDESC;
< name[3] = pid;
<
< error = sysctl(name, 4, NULL, &len, NULL, 0);
< if (error < 0 && errno != ESRCH && errno != EPERM) {
< warn("sysctl: kern.proc.filedesc: %d", pid);
< return;
< }
< if (error < 0)
< return;
<
< freep = kif = malloc(len);
< if (kif == NULL)
< err(-1, "malloc");
<
< if (sysctl(name, 4, kif, &len, NULL, 0) < 0) {
< warn("sysctl: kern.proc.filedesc %d", pid);
< free(freep);
< return;
< }
<
< for (i = 0; i < len / sizeof(*kif); i++, kif++) {
< if (kif->kf_structsize != sizeof(*kif))
< errx(-1, "kinfo_file mismatch");
---
> freep = kinfo_getfile(pid, &cnt);
> for (i = 0; i < cnt; i++) {
> kif = &freep[i];
>