git: 6d95a66f1b53 - stable/13 - vm_object: Make is_object_active() global
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 09 Feb 2022 00:43:33 UTC
The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=6d95a66f1b538996f6c43710ce1fde903928d85f commit 6d95a66f1b538996f6c43710ce1fde903928d85f Author: Rick Macklem <rmacklem@FreeBSD.org> AuthorDate: 2021-12-20 00:11:44 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2022-02-09 00:42:44 +0000 vm_object: Make is_object_active() global (cherry picked from commit cd37afd8b6ddc38fe2441e37a8bf5f8cdce50bc6) --- sys/vm/vm_meter.c | 19 ++----------------- sys/vm/vm_object.c | 15 +++++++++++++++ sys/vm/vm_object.h | 1 + 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/sys/vm/vm_meter.c b/sys/vm/vm_meter.c index 44d3ac999c5a..15afd1f23649 100644 --- a/sys/vm/vm_meter.c +++ b/sys/vm/vm_meter.c @@ -142,21 +142,6 @@ SYSCTL_PROC(_vm, VM_LOADAVG, loadavg, CTLTYPE_STRUCT | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, 0, sysctl_vm_loadavg, "S,loadavg", "Machine loadaverage history"); -/* - * This function aims to determine if the object is mapped, - * specifically, if it is referenced by a vm_map_entry. Because - * objects occasionally acquire transient references that do not - * represent a mapping, the method used here is inexact. However, it - * has very low overhead and is good enough for the advisory - * vm.vmtotal sysctl. - */ -static bool -is_object_active(vm_object_t obj) -{ - - return (obj->ref_count > obj->shadow_count); -} - #if defined(COMPAT_FREEBSD11) struct vmtotal11 { int16_t t_rq; @@ -268,7 +253,7 @@ vmtotal(SYSCTL_HANDLER_ARGS) } total.t_vm += object->size; total.t_rm += object->resident_page_count; - if (is_object_active(object)) { + if (vm_object_is_active(object)) { total.t_avm += object->size; total.t_arm += object->resident_page_count; } @@ -276,7 +261,7 @@ vmtotal(SYSCTL_HANDLER_ARGS) /* shared object */ total.t_vmshr += object->size; total.t_rmshr += object->resident_page_count; - if (is_object_active(object)) { + if (vm_object_is_active(object)) { total.t_avmshr += object->size; total.t_armshr += object->resident_page_count; } diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index cc4463567aae..7bc503f7afdf 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -2498,6 +2498,21 @@ vm_object_busy_wait(vm_object_t obj, const char *wmesg) (void)blockcount_sleep(&obj->busy, NULL, wmesg, PVM); } +/* + * This function aims to determine if the object is mapped, + * specifically, if it is referenced by a vm_map_entry. Because + * objects occasionally acquire transient references that do not + * represent a mapping, the method used here is inexact. However, it + * has very low overhead and is good enough for the advisory + * vm.vmtotal sysctl. + */ +bool +vm_object_is_active(vm_object_t obj) +{ + + return (obj->ref_count > obj->shadow_count); +} + static int vm_object_list_handler(struct sysctl_req *req, bool swap_only) { diff --git a/sys/vm/vm_object.h b/sys/vm/vm_object.h index 2a16d8c6f096..903c85261254 100644 --- a/sys/vm/vm_object.h +++ b/sys/vm/vm_object.h @@ -391,6 +391,7 @@ boolean_t vm_object_sync(vm_object_t, vm_ooffset_t, vm_size_t, boolean_t, void vm_object_unwire(vm_object_t object, vm_ooffset_t offset, vm_size_t length, uint8_t queue); struct vnode *vm_object_vnode(vm_object_t object); +bool vm_object_is_active(vm_object_t obj); #endif /* _KERNEL */ #endif /* _VM_OBJECT_ */