summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortrociny <trociny@FreeBSD.org>2013-04-20 08:05:04 +0000
committertrociny <trociny@FreeBSD.org>2013-04-20 08:05:04 +0000
commit7b0f0126fb247c7c74a8723dc794fc93445f2009 (patch)
treed4f59c0468456c7795ad92786bfeb50a267072db
parent72dafce20f72d7aa3e2fab75a4ef453d39b8dbdd (diff)
downloadFreeBSD-src-7b0f0126fb247c7c74a8723dc794fc93445f2009.zip
FreeBSD-src-7b0f0126fb247c7c74a8723dc794fc93445f2009.tar.gz
Use libprocstat(3) when retrieving binary information for a process.
MFC after: 1 month
-rw-r--r--usr.bin/procstat/procstat.c2
-rw-r--r--usr.bin/procstat/procstat.h2
-rw-r--r--usr.bin/procstat/procstat_bin.c33
3 files changed, 8 insertions, 29 deletions
diff --git a/usr.bin/procstat/procstat.c b/usr.bin/procstat/procstat.c
index 86451b3..16f2c99 100644
--- a/usr.bin/procstat/procstat.c
+++ b/usr.bin/procstat/procstat.c
@@ -59,7 +59,7 @@ procstat(struct procstat *prstat, struct kinfo_proc *kipp)
{
if (bflag)
- procstat_bin(kipp);
+ procstat_bin(prstat, kipp);
else if (cflag)
procstat_args(kipp);
else if (eflag)
diff --git a/usr.bin/procstat/procstat.h b/usr.bin/procstat/procstat.h
index d825e78..e651665 100644
--- a/usr.bin/procstat/procstat.h
+++ b/usr.bin/procstat/procstat.h
@@ -37,7 +37,7 @@ void kinfo_proc_sort(struct kinfo_proc *kipp, int count);
void procstat_args(struct kinfo_proc *kipp);
void procstat_auxv(struct kinfo_proc *kipp);
void procstat_basic(struct kinfo_proc *kipp);
-void procstat_bin(struct kinfo_proc *kipp);
+void procstat_bin(struct procstat *prstat, struct kinfo_proc *kipp);
void procstat_cred(struct procstat *prstat, struct kinfo_proc *kipp);
void procstat_env(struct kinfo_proc *kipp);
void procstat_files(struct procstat *prstat, struct kinfo_proc *kipp);
diff --git a/usr.bin/procstat/procstat_bin.c b/usr.bin/procstat/procstat_bin.c
index 718103d..dc88c38 100644
--- a/usr.bin/procstat/procstat_bin.c
+++ b/usr.bin/procstat/procstat_bin.c
@@ -40,40 +40,19 @@
#include "procstat.h"
void
-procstat_bin(struct kinfo_proc *kipp)
+procstat_bin(struct procstat *prstat, struct kinfo_proc *kipp)
{
- char pathname[PATH_MAX];
- int error, osrel, name[4];
- size_t len;
+ int osrel;
+ static char pathname[PATH_MAX];
if (!hflag)
printf("%5s %-16s %8s %s\n", "PID", "COMM", "OSREL", "PATH");
- name[0] = CTL_KERN;
- name[1] = KERN_PROC;
- name[2] = KERN_PROC_PATHNAME;
- name[3] = kipp->ki_pid;
-
- len = sizeof(pathname);
- error = sysctl(name, 4, pathname, &len, NULL, 0);
- if (error < 0 && errno != ESRCH) {
- warn("sysctl: kern.proc.pathname: %d", kipp->ki_pid);
- return;
- }
- if (error < 0)
+ if (procstat_getpathname(prstat, kipp, pathname, sizeof(pathname)) != 0)
return;
- if (len == 0 || strlen(pathname) == 0)
+ if (strlen(pathname) == 0)
strcpy(pathname, "-");
-
- name[2] = KERN_PROC_OSREL;
-
- len = sizeof(osrel);
- error = sysctl(name, 4, &osrel, &len, NULL, 0);
- if (error < 0 && errno != ESRCH) {
- warn("sysctl: kern.proc.osrel: %d", kipp->ki_pid);
- return;
- }
- if (error < 0)
+ if (procstat_getosrel(prstat, kipp, &osrel) != 0)
return;
printf("%5d ", kipp->ki_pid);
OpenPOWER on IntegriCloud