summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeel Chauhan <neel@neelc.org>2019-12-15 11:06:37 -0500
committerNeel Chauhan <neel@neelc.org>2019-12-15 11:06:37 -0500
commit9b4a03ed0a82a3cbd3086e5352a991759213471b (patch)
tree028cf670cdf7031ecf10d98d25ca0e66db14632b
parent34242826d6f12ffbe8798c83e6d32a061a8843fe (diff)
downloadlibgtop-9b4a03ed0a82a3cbd3086e5352a991759213471b.tar.gz
Support FreeBSD 13.0-CURRENT >= 1300062 vm_map_entry
-rw-r--r--sysdeps/freebsd/procmap.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sysdeps/freebsd/procmap.c b/sysdeps/freebsd/procmap.c
index ffd88e14..92ae9368 100644
--- a/sysdeps/freebsd/procmap.c
+++ b/sysdeps/freebsd/procmap.c
@@ -273,10 +273,18 @@ glibtop_get_proc_map_p (glibtop *server, glibtop_proc_map *buf,
return NULL;
}
+#if (__FreeBSD_version >= 1300062)
+ first = vmspace.vm_map.header.right;
+#else
first = vmspace.vm_map.header.next;
+#endif
if (kvm_read (server->machine->kd,
+#if (__FreeBSD_version >= 1300062)
+ (gulong) vmspace.vm_map.header.right,
+#else
(gulong) vmspace.vm_map.header.next,
+#endif
(char *) &entry, sizeof (entry)) != sizeof (entry)) {
glibtop_warn_io_r (server, "kvm_read (entry)");
glibtop_suid_leave (server);
@@ -299,7 +307,11 @@ glibtop_get_proc_map_p (glibtop *server, glibtop_proc_map *buf,
if (update) {
if (kvm_read (server->machine->kd,
+#if (__FreeBSD_version >= 1300062)
+ (gulong) entry.right,
+#else
(gulong) entry.next,
+#endif
(char *) &entry, sizeof (entry)) != sizeof (entry)) {
glibtop_warn_io_r (server, "kvm_read (entry)");
continue;
@@ -377,7 +389,11 @@ glibtop_get_proc_map_p (glibtop *server, glibtop_proc_map *buf,
if (entry.protection & VM_PROT_EXECUTE)
mentry->perm |= GLIBTOP_MAP_PERM_EXECUTE;
+#if (__FreeBSD_version >= 1300062)
+ } while (entry.right != first);
+#else
} while (entry.next != first);
+#endif
glibtop_suid_leave (server);