mirror of https://github.com/xzeldon/htop.git
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).
This commit is contained in:
parent
63c55854e5
commit
b886ecc479
|
@ -14,7 +14,9 @@ in the source distribution for its full text.
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
#include <sys/user.h>
|
#include <sys/user.h>
|
||||||
|
#include <err.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <limits.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
/*{
|
/*{
|
||||||
|
@ -86,12 +88,12 @@ static int kernelFScale;
|
||||||
|
|
||||||
|
|
||||||
ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidWhiteList, uid_t userId) {
|
ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidWhiteList, uid_t userId) {
|
||||||
|
size_t len;
|
||||||
|
char errbuf[_POSIX2_LINE_MAX];
|
||||||
FreeBSDProcessList* fpl = xCalloc(1, sizeof(FreeBSDProcessList));
|
FreeBSDProcessList* fpl = xCalloc(1, sizeof(FreeBSDProcessList));
|
||||||
ProcessList* pl = (ProcessList*) fpl;
|
ProcessList* pl = (ProcessList*) fpl;
|
||||||
ProcessList_init(pl, Class(FreeBSDProcess), usersTable, pidWhiteList, userId);
|
ProcessList_init(pl, Class(FreeBSDProcess), usersTable, pidWhiteList, userId);
|
||||||
|
|
||||||
size_t len;
|
|
||||||
|
|
||||||
// physical memory in system: hw.physmem
|
// physical memory in system: hw.physmem
|
||||||
// physical page size: hw.pagesize
|
// physical page size: hw.pagesize
|
||||||
// usable pagesize : vm.stats.vm.v_page_size
|
// usable pagesize : vm.stats.vm.v_page_size
|
||||||
|
@ -178,8 +180,10 @@ ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidWhiteList, ui
|
||||||
kernelFScale = 2048;
|
kernelFScale = 2048;
|
||||||
}
|
}
|
||||||
|
|
||||||
fpl->kd = kvm_open(NULL, "/dev/null", NULL, 0, NULL);
|
fpl->kd = kvm_openfiles(NULL, "/dev/null", NULL, 0, errbuf);
|
||||||
assert(fpl->kd);
|
if (fpl->kd == NULL) {
|
||||||
|
errx(1, "kvm_open: %s", errbuf);
|
||||||
|
}
|
||||||
|
|
||||||
return pl;
|
return pl;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue