Changeset View
Changeset View
Standalone View
Standalone View
lib/libutil/kinfo_getvmobject.c
Show All 30 Lines | |||||
#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 <stdlib.h> | #include <stdlib.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include "libutil.h" | #include "libutil.h" | ||||
struct kinfo_vmobject * | static struct kinfo_vmobject * | ||||
kinfo_getvmobject(int *cntp) | _kinfo_getvmobject(int *cntp, const char* vmobjsysctl) | ||||
{ | { | ||||
char *buf, *bp, *ep; | char *buf, *bp, *ep; | ||||
struct kinfo_vmobject *kvo, *list, *kp; | struct kinfo_vmobject *kvo, *list, *kp; | ||||
size_t len; | size_t len; | ||||
int cnt, i; | int cnt, i; | ||||
buf = NULL; | buf = NULL; | ||||
for (i = 0; i < 3; i++) { | for (i = 0; i < 3; i++) { | ||||
if (sysctlbyname("vm.objects", NULL, &len, NULL, 0) < 0) { | if (sysctlbyname(vmobjsysctl, NULL, &len, NULL, 0) < 0) { | ||||
free(buf); | free(buf); | ||||
return (NULL); | return (NULL); | ||||
} | } | ||||
buf = reallocf(buf, len); | buf = reallocf(buf, len); | ||||
if (buf == NULL) | if (buf == NULL) | ||||
return (NULL); | return (NULL); | ||||
if (sysctlbyname("vm.objects", buf, &len, NULL, 0) == 0) | if (sysctlbyname("vm.objects", buf, &len, NULL, 0) == 0) | ||||
goto unpack; | goto unpack; | ||||
Show All 30 Lines | while (bp < ep) { | ||||
memcpy(kp, kvo, kvo->kvo_structsize); | memcpy(kp, kvo, kvo->kvo_structsize); | ||||
bp += kvo->kvo_structsize; | bp += kvo->kvo_structsize; | ||||
kp->kvo_structsize = sizeof(*kp); | kp->kvo_structsize = sizeof(*kp); | ||||
kp++; | kp++; | ||||
} | } | ||||
free(buf); | free(buf); | ||||
*cntp = cnt; | *cntp = cnt; | ||||
return (list); | return (list); | ||||
} | |||||
struct kinfo_vmobject * | |||||
kinfo_getvmobject(int *cntp) | |||||
{ | |||||
return _kinfo_getvmobject(cntp, "vm.objects"); | |||||
} | |||||
struct kinfo_vmobject * | |||||
kinfo_getswapvmobject(int *cntp) | |||||
{ | |||||
return _kinfo_getvmobject(cntp, "vm.swap_objects"); | |||||
} | } |