freebsd: replace kvm with sysctl
PR-URL: https://github.com/libuv/libuv/pull/1377 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
This commit is contained in:
parent
500a1f96eb
commit
4987b6325b
@ -66,9 +66,7 @@ AM_CONDITIONAL([WINNT], [AS_CASE([$host_os],[mingw*], [true], [false])
|
||||
AS_CASE([$host_os],[mingw*], [
|
||||
LIBS="$LIBS -lws2_32 -lpsapi -liphlpapi -lshell32 -luserenv -luser32"
|
||||
])
|
||||
AS_CASE([$host_os], [openbsd*], [], [
|
||||
AC_CHECK_LIB([kvm], [kvm_open])
|
||||
])
|
||||
AS_CASE([$host_os], [netbsd*], [AC_CHECK_LIB([kvm], [kvm_open])])
|
||||
AC_CHECK_HEADERS([sys/ahafs_evProds.h])
|
||||
AC_CHECK_PROG(PKG_CONFIG, pkg-config, yes)
|
||||
AM_CONDITIONAL([HAVE_PKG_CONFIG], [test "x$PKG_CONFIG" != "x"])
|
||||
|
||||
@ -25,7 +25,6 @@
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <kvm.h>
|
||||
#include <paths.h>
|
||||
#include <sys/user.h>
|
||||
#include <sys/types.h>
|
||||
@ -203,35 +202,31 @@ int uv_get_process_title(char* buffer, size_t size) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int uv_resident_set_memory(size_t* rss) {
|
||||
kvm_t *kd = NULL;
|
||||
struct kinfo_proc *kinfo = NULL;
|
||||
pid_t pid;
|
||||
int nprocs;
|
||||
size_t page_size = getpagesize();
|
||||
struct kinfo_proc kinfo;
|
||||
size_t page_size;
|
||||
size_t kinfo_size;
|
||||
int mib[4];
|
||||
|
||||
pid = getpid();
|
||||
mib[0] = CTL_KERN;
|
||||
mib[1] = KERN_PROC;
|
||||
mib[2] = KERN_PROC_PID;
|
||||
mib[3] = getpid();
|
||||
|
||||
kd = kvm_open(NULL, _PATH_DEVNULL, NULL, O_RDONLY, "kvm_open");
|
||||
if (kd == NULL) goto error;
|
||||
kinfo_size = sizeof(kinfo);
|
||||
|
||||
kinfo = kvm_getprocs(kd, KERN_PROC_PID, pid, &nprocs);
|
||||
if (kinfo == NULL) goto error;
|
||||
if (sysctl(mib, 4, &kinfo, &kinfo_size, NULL, 0))
|
||||
return -errno;
|
||||
|
||||
page_size = getpagesize();
|
||||
|
||||
#ifdef __DragonFly__
|
||||
*rss = kinfo->kp_vm_rssize * page_size;
|
||||
*rss = kinfo.kp_vm_rssize * page_size;
|
||||
#else
|
||||
*rss = kinfo->ki_rssize * page_size;
|
||||
*rss = kinfo.ki_rssize * page_size;
|
||||
#endif
|
||||
|
||||
kvm_close(kd);
|
||||
|
||||
return 0;
|
||||
|
||||
error:
|
||||
if (kd) kvm_close(kd);
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
|
||||
|
||||
6
uv.gyp
6
uv.gyp
@ -302,12 +302,12 @@
|
||||
'sources': [ 'src/unix/openbsd.c' ],
|
||||
}],
|
||||
[ 'OS=="netbsd"', {
|
||||
'sources': [ 'src/unix/netbsd.c' ],
|
||||
}],
|
||||
[ 'OS in "freebsd dragonflybsd openbsd netbsd".split()', {
|
||||
'link_settings': {
|
||||
'libraries': [ '-lkvm' ],
|
||||
},
|
||||
'sources': [ 'src/unix/netbsd.c' ],
|
||||
}],
|
||||
[ 'OS in "freebsd dragonflybsd openbsd netbsd".split()', {
|
||||
'sources': [ 'src/unix/posix-hrtime.c' ],
|
||||
}],
|
||||
[ 'OS in "ios mac freebsd dragonflybsd openbsd netbsd".split()', {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user