diff options
-rw-r--r-- | sys/include/vm/obj.h | 1 | ||||
-rw-r--r-- | sys/include/vm/vm.h | 1 | ||||
-rw-r--r-- | sys/vm/vm_obj.c | 10 | ||||
-rw-r--r-- | sys/vm/vm_stat.c | 2 |
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; } |