From 5a62fdee4d166fe0eff14bc616e1befa8ad54cd2 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 11 Mar 2015 04:28:51 +0000 Subject: vm_dump.c: check procstat_getvmmap * configure.in: check also procstat_getvmmap, which is not available on FreeBSD 9. [ruby-core:68468] [Bug #10954] * vm_dump.c (procstat_vm): use kinfo_getvmmap instead if procstat_getvmmap is not available. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ configure.in | 3 +++ vm_dump.c | 4 ++++ 3 files changed, 15 insertions(+) diff --git a/ChangeLog b/ChangeLog index 6f4880aea8..1a6f0139b7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Wed Mar 11 13:28:49 2015 Nobuyoshi Nakada + + * configure.in: check also procstat_getvmmap, which is not + available on FreeBSD 9. [ruby-core:68468] [Bug #10954] + + * vm_dump.c (procstat_vm): use kinfo_getvmmap instead if + procstat_getvmmap is not available. + Wed Mar 11 09:15:21 2015 Koichi Sasada * internal.h: define struct MEMO. diff --git a/configure.in b/configure.in index 88a13a3475..e278261c6f 100644 --- a/configure.in +++ b/configure.in @@ -3143,6 +3143,9 @@ fi AS_CASE(["$target_os"], [freebsd*], [ AC_CHECK_LIB([procstat], [procstat_open_sysctl]) + if test "x$ac_cv_lib_procstat_procstat_open_sysctl" = xyes; then + AC_CHECK_FUNCS(procstat_getvmmap) + fi ]) AS_CASE(["$target_cpu-$target_os"], [*-darwin*], [ diff --git a/vm_dump.c b/vm_dump.c index 45e4cb238e..1825f6845c 100644 --- a/vm_dump.c +++ b/vm_dump.c @@ -735,7 +735,11 @@ procstat_vm(struct procstat *procstat, struct kinfo_proc *kipp) ptrwidth, "START", ptrwidth, "END", "PRT", "RES", "PRES", "REF", "SHD", "FL", "TP", "PATH"); +#ifdef HAVE_PROCSTAT_GETVMMAP freep = procstat_getvmmap(procstat, kipp, &cnt); +#else + freep = kinfo_getvmmap(kipp->ki_pid, &cnt); +#endif if (freep == NULL) return; for (i = 0; i < cnt; i++) { -- cgit v1.2.3