From b886ecc4795723d4b596a03c3e2a88cc2dc191ba Mon Sep 17 00:00:00 2001 From: Michael McConville Date: Sat, 5 Mar 2016 22:59:39 -0500 Subject: 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). --- freebsd/FreeBSDProcessList.c | 12 ++++++++---- 1 file 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 #include #include +#include #include +#include #include /*{ @@ -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; } -- cgit v1.2.3