aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/procstat/procstat_rlimit.c
diff options
context:
space:
mode:
authorMikolaj Golub <trociny@FreeBSD.org>2012-01-22 20:26:46 +0000
committerMikolaj Golub <trociny@FreeBSD.org>2012-01-22 20:26:46 +0000
commitc3c314f9f7e8567e949bd0a1e85b77a307623e60 (patch)
treefa74709745015f1ac108867f7dc5e517a29d5a98 /usr.bin/procstat/procstat_rlimit.c
parent8854fe3915870aa3151ea6d0a1962092f1554fd2 (diff)
downloadsrc-c3c314f9f7e8567e949bd0a1e85b77a307623e60.tar.gz
src-c3c314f9f7e8567e949bd0a1e85b77a307623e60.zip
Make procstat -l to work with the new version of kern.proc.rlimit.
Submitted by: Andrey Zonov <andrey at zonov.org> MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=230471
Diffstat (limited to 'usr.bin/procstat/procstat_rlimit.c')
-rw-r--r--usr.bin/procstat/procstat_rlimit.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/usr.bin/procstat/procstat_rlimit.c b/usr.bin/procstat/procstat_rlimit.c
index 4f7e9860770e..5f9c5fc0d5fc 100644
--- a/usr.bin/procstat/procstat_rlimit.c
+++ b/usr.bin/procstat/procstat_rlimit.c
@@ -90,27 +90,28 @@ const char *humanize_rlimit(int indx, rlim_t limit)
void
procstat_rlimit(struct kinfo_proc *kipp)
{
- int error, i, name[4];
+ int error, i, name[5];
size_t len;
if (!hflag) {
printf("%5s %-16s %-16s %16s %16s\n",
"PID", "COMM", "RLIMIT", "SOFT ", "HARD ");
}
+ len = sizeof(struct rlimit);
name[0] = CTL_KERN;
name[1] = KERN_PROC;
name[2] = KERN_PROC_RLIMIT;
name[3] = kipp->ki_pid;
- len = sizeof(rlimit);
- error = sysctl(name, 4, rlimit, &len, NULL, 0);
- if (error < 0 && errno != ESRCH) {
- warn("sysctl: kern.proc.rlimit: %d", kipp->ki_pid);
- return;
- }
- if (error < 0 || len != sizeof(rlimit))
- return;
-
for (i = 0; i < RLIM_NLIMITS; i++) {
+ name[4] = i;
+ error = sysctl(name, 5, &rlimit[i], &len, NULL, 0);
+ if (error < 0 && errno != ESRCH) {
+ warn("sysctl: kern.proc.rlimit: %d", kipp->ki_pid);
+ return;
+ }
+ if (error < 0 || len != sizeof(struct rlimit))
+ return;
+
printf("%5d %-16s %-16s ", kipp->ki_pid, kipp->ki_comm,
rlimit_param[i].name);
printf("%16s ", humanize_rlimit(i, rlimit[i].rlim_cur));