aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_proc.c
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2021-04-15 09:27:02 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2021-04-19 18:32:01 +0000
commitecfbddf0cde3d4151217e3eb2d7c5388a423d397 (patch)
tree85505d5ad50ef69d9bcb7514767d925fd8684250 /sys/kern/kern_proc.c
parent4342ba184c15f3b8912e95f93fe313731963f065 (diff)
downloadsrc-ecfbddf0cde3d4151217e3eb2d7c5388a423d397.tar.gz
src-ecfbddf0cde3d4151217e3eb2d7c5388a423d397.zip
sysctl vm.objects: report backing object and swap use
For anonymous objects, provide a handle kvo_me naming the object, and report the handle of the backing object. This allows userspace to deconstruct the shadow chain. Right now the handle is the address of the object in KVA, but this is not guaranteed. For the same anonymous objects, report the swap space used for actually swapped out pages, in kvo_swapped field. I do not believe that it is useful to report full 64bit counter there, so only uint32_t value is returned, clamped to the max. For kinfo_vmentry, report anonymous object handle backing the entry, so that the shadow chain for the specific mapping can be deconstructed. Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D29771
Diffstat (limited to 'sys/kern/kern_proc.c')
-rw-r--r--sys/kern/kern_proc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
index 817cb9766bbf..33f168836370 100644
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -2538,6 +2538,9 @@ kern_proc_vmmap_out(struct proc *p, struct sbuf *sb, ssize_t maxlen, int flags)
bzero(kve, sizeof(*kve));
obj = entry->object.vm_object;
if (obj != NULL) {
+ if ((obj->flags & OBJ_ANON) != 0)
+ kve->kve_obj = (uintptr_t)obj;
+
for (tobj = obj; tobj != NULL;
tobj = tobj->backing_object) {
VM_OBJECT_RLOCK(tobj);