diff options
author | Michael McConville <mmcco@mykolab.com> | 2016-03-05 22:59:39 -0500 |
---|---|---|
committer | Michael McConville <mmcco@mykolab.com> | 2016-03-05 22:59:39 -0500 |
commit | b886ecc4795723d4b596a03c3e2a88cc2dc191ba (patch) | |
tree | 2fffd82a7537437452d731038970cbccda0f84c1 | |
parent | 63c55854e59250f44006445b24bf6168064e2426 (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).
-rw-r--r-- | freebsd/FreeBSDProcessList.c | 12 |
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; } |