aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2024-05-23 01:55:41 -0400
committerIan Moffett <ian@osmora.org>2024-05-23 03:18:41 -0400
commit05eb9f648569d708e167272e04437466a2f0b594 (patch)
tree7649e305ff71dce593b7426fee0b676994aa080a
parente0b34937b1bd674c05d609331501f81740fbb87f (diff)
kernel: vm: Keep track of vmobj count
Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r--sys/include/vm/obj.h1
-rw-r--r--sys/include/vm/vm.h1
-rw-r--r--sys/vm/vm_obj.c10
-rw-r--r--sys/vm/vm_stat.c2
4 files changed, 14 insertions, 0 deletions
diff --git a/sys/include/vm/obj.h b/sys/include/vm/obj.h
index ef07a1e..e4258ac 100644
--- a/sys/include/vm/obj.h
+++ b/sys/include/vm/obj.h
@@ -54,6 +54,7 @@ struct vm_object {
} \
} while (0);
+size_t vm_obj_count(void);
int vm_obj_init(struct vm_object **res, struct vnode *vnode);
int vm_obj_destroy(struct vm_object *obj);
diff --git a/sys/include/vm/vm.h b/sys/include/vm/vm.h
index f6fba66..1c23b8a 100644
--- a/sys/include/vm/vm.h
+++ b/sys/include/vm/vm.h
@@ -55,6 +55,7 @@ struct vm_range {
struct vm_memstat {
struct physmem_stat pmem_stat;
+ size_t vmobj_cnt;
};
/*
diff --git a/sys/vm/vm_obj.c b/sys/vm/vm_obj.c
index 7487b47..8f34ff3 100644
--- a/sys/vm/vm_obj.c
+++ b/sys/vm/vm_obj.c
@@ -32,6 +32,8 @@
#include <sys/errno.h>
#include <string.h>
+static size_t obj_count = 0;
+
static void
vm_set_pgops(struct vm_object *obj, struct vnode *vnode)
{
@@ -63,6 +65,7 @@ vm_obj_init(struct vm_object **res, struct vnode *vnode)
vm_set_pgops(obj, vnode);
*res = obj;
+ ++obj_count;
return 0;
}
@@ -79,5 +82,12 @@ vm_obj_destroy(struct vm_object *obj)
return -EBUSY;
dynfree(obj);
+ --obj_count;
return 0;
}
+
+size_t
+vm_obj_count(void)
+{
+ return obj_count;
+}
diff --git a/sys/vm/vm_stat.c b/sys/vm/vm_stat.c
index 99ee9a9..6374699 100644
--- a/sys/vm/vm_stat.c
+++ b/sys/vm/vm_stat.c
@@ -29,6 +29,7 @@
#include <vm/physseg.h>
#include <vm/vm.h>
+#include <vm/obj.h>
struct vm_memstat
vm_memstat(void)
@@ -36,5 +37,6 @@ vm_memstat(void)
struct vm_memstat stat;
stat.pmem_stat = vm_phys_memstat();
+ stat.vmobj_cnt = vm_obj_count();
return stat;
}