summaryrefslogtreecommitdiffstats
path: root/freebsd
diff options
context:
space:
mode:
authorMichael McConville <mmcco@mykolab.com>2016-03-05 22:59:39 -0500
committerMichael McConville <mmcco@mykolab.com>2016-03-05 22:59:39 -0500
commitb886ecc4795723d4b596a03c3e2a88cc2dc191ba (patch)
tree2fffd82a7537437452d731038970cbccda0f84c1 /freebsd
parent63c55854e59250f44006445b24bf6168064e2426 (diff)
Improve error reporting on FreeBSD libkvm call
This involves switching from kvm_open(3) to kvm_openfiles(3). The only difference is that the latter has saner error reporting (see the man page for details). We can now fatally report the error rather than just calling assert(3).
Diffstat (limited to 'freebsd')
-rw-r--r--freebsd/FreeBSDProcessList.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/freebsd/FreeBSDProcessList.c b/freebsd/FreeBSDProcessList.c
index ebb07620..0cfe16c3 100644
--- a/freebsd/FreeBSDProcessList.c
+++ b/freebsd/FreeBSDProcessList.c
@@ -14,7 +14,9 @@ in the source distribution for its full text.
#include <sys/types.h>
#include <sys/sysctl.h>
#include <sys/user.h>
+#include <err.h>
#include <fcntl.h>
+#include <limits.h>
#include <string.h>
/*{
@@ -86,12 +88,12 @@ static int kernelFScale;
ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidWhiteList, uid_t userId) {
+ size_t len;
+ char errbuf[_POSIX2_LINE_MAX];
FreeBSDProcessList* fpl = xCalloc(1, sizeof(FreeBSDProcessList));
ProcessList* pl = (ProcessList*) fpl;
ProcessList_init(pl, Class(FreeBSDProcess), usersTable, pidWhiteList, userId);
- size_t len;
-
// physical memory in system: hw.physmem
// physical page size: hw.pagesize
// usable pagesize : vm.stats.vm.v_page_size
@@ -178,8 +180,10 @@ ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidWhiteList, ui
kernelFScale = 2048;
}
- fpl->kd = kvm_open(NULL, "/dev/null", NULL, 0, NULL);
- assert(fpl->kd);
+ fpl->kd = kvm_openfiles(NULL, "/dev/null", NULL, 0, errbuf);
+ if (fpl->kd == NULL) {
+ errx(1, "kvm_open: %s", errbuf);
+ }
return pl;
}

© 2014-2024 Faster IT GmbH | imprint | privacy policy