aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_meter.c
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2002-04-20 07:23:22 +0000
committerAlan Cox <alc@FreeBSD.org>2002-04-20 07:23:22 +0000
commita569838764665c3655d359e414236ca8ca7e8a38 (patch)
treeecd9967c03b704767150a51c3172dbb0ece35798 /sys/vm/vm_meter.c
parent32eb065e64cb21aa2eec47d29d7f8356591948d1 (diff)
Notes
Diffstat (limited to 'sys/vm/vm_meter.c')
-rw-r--r--sys/vm/vm_meter.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/vm/vm_meter.c b/sys/vm/vm_meter.c
index fde1f49833476..935979ae017d9 100644
--- a/sys/vm/vm_meter.c
+++ b/sys/vm/vm_meter.c
@@ -95,8 +95,10 @@ vmtotal(SYSCTL_HANDLER_ARGS)
* Mark all objects as inactive.
*/
GIANT_REQUIRED;
+ mtx_lock(&vm_object_list_mtx);
TAILQ_FOREACH(object, &vm_object_list, object_list)
vm_object_clear_flag(object, OBJ_ACTIVE);
+ mtx_unlock(&vm_object_list_mtx);
/*
* Calculate process statistics.
*/
@@ -164,6 +166,7 @@ vmtotal(SYSCTL_HANDLER_ARGS)
/*
* Calculate object memory usage statistics.
*/
+ mtx_lock(&vm_object_list_mtx);
TAILQ_FOREACH(object, &vm_object_list, object_list) {
/*
* devices, like /dev/mem, will badly skew our totals
@@ -186,6 +189,7 @@ vmtotal(SYSCTL_HANDLER_ARGS)
}
}
}
+ mtx_unlock(&vm_object_list_mtx);
totalp->t_free = cnt.v_free_count + cnt.v_cache_count;
return (sysctl_handle_opaque(oidp, totalp, sizeof total, req));
}