vm_meter.c (181887) | vm_meter.c (187658) |
---|---|
1/*- 2 * Copyright (c) 1982, 1986, 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 16 unchanged lines hidden (view full) --- 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * @(#)vm_meter.c 8.4 (Berkeley) 1/4/94 30 */ 31 32#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 1982, 1986, 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 16 unchanged lines hidden (view full) --- 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * @(#)vm_meter.c 8.4 (Berkeley) 1/4/94 30 */ 31 32#include <sys/cdefs.h> |
33__FBSDID("$FreeBSD: head/sys/vm/vm_meter.c 181887 2008-08-20 01:05:56Z julian $"); | 33__FBSDID("$FreeBSD: head/sys/vm/vm_meter.c 187658 2009-01-23 22:49:23Z jhb $"); |
34 35#include <sys/param.h> 36#include <sys/systm.h> 37#include <sys/kernel.h> 38#include <sys/lock.h> 39#include <sys/mutex.h> 40#include <sys/proc.h> 41#include <sys/resource.h> --- 43 unchanged lines hidden (view full) --- 85 la[1] = averunnable.ldavg[1]; 86 la[2] = averunnable.ldavg[2]; 87 la[3] = averunnable.fscale; 88 return SYSCTL_OUT(req, la, sizeof(la)); 89 } else 90#endif 91 return SYSCTL_OUT(req, &averunnable, sizeof(averunnable)); 92} | 34 35#include <sys/param.h> 36#include <sys/systm.h> 37#include <sys/kernel.h> 38#include <sys/lock.h> 39#include <sys/mutex.h> 40#include <sys/proc.h> 41#include <sys/resource.h> --- 43 unchanged lines hidden (view full) --- 85 la[1] = averunnable.ldavg[1]; 86 la[2] = averunnable.ldavg[2]; 87 la[3] = averunnable.fscale; 88 return SYSCTL_OUT(req, la, sizeof(la)); 89 } else 90#endif 91 return SYSCTL_OUT(req, &averunnable, sizeof(averunnable)); 92} |
93SYSCTL_PROC(_vm, VM_LOADAVG, loadavg, CTLTYPE_STRUCT|CTLFLAG_RD, 94 NULL, 0, sysctl_vm_loadavg, "S,loadavg", "Machine loadaverage history"); | 93SYSCTL_PROC(_vm, VM_LOADAVG, loadavg, CTLTYPE_STRUCT | CTLFLAG_RD | 94 CTLFLAG_MPSAFE, NULL, 0, sysctl_vm_loadavg, "S,loadavg", 95 "Machine loadaverage history"); |
95 96static int 97vmtotal(SYSCTL_HANDLER_ARGS) 98{ 99 struct proc *p; 100 struct vmtotal total; 101 vm_map_entry_t entry; 102 vm_object_t object; 103 vm_map_t map; 104 int paging; 105 struct thread *td; 106 struct vmspace *vm; 107 108 bzero(&total, sizeof(total)); 109 /* 110 * Mark all objects as inactive. 111 */ | 96 97static int 98vmtotal(SYSCTL_HANDLER_ARGS) 99{ 100 struct proc *p; 101 struct vmtotal total; 102 vm_map_entry_t entry; 103 vm_object_t object; 104 vm_map_t map; 105 int paging; 106 struct thread *td; 107 struct vmspace *vm; 108 109 bzero(&total, sizeof(total)); 110 /* 111 * Mark all objects as inactive. 112 */ |
112 GIANT_REQUIRED; | |
113 mtx_lock(&vm_object_list_mtx); 114 TAILQ_FOREACH(object, &vm_object_list, object_list) { 115 if (!VM_OBJECT_TRYLOCK(object)) { 116 /* 117 * Avoid a lock-order reversal. Consequently, 118 * the reported number of active pages may be 119 * greater than the actual number. 120 */ --- 143 unchanged lines hidden (view full) --- 264 count += *(int *)((char *)&pcpu->pc_cnt + offset); 265 } 266#else 267 count += *(int *)((char *)PCPU_PTR(cnt) + offset); 268#endif 269 return (SYSCTL_OUT(req, &count, sizeof(int))); 270} 271 | 113 mtx_lock(&vm_object_list_mtx); 114 TAILQ_FOREACH(object, &vm_object_list, object_list) { 115 if (!VM_OBJECT_TRYLOCK(object)) { 116 /* 117 * Avoid a lock-order reversal. Consequently, 118 * the reported number of active pages may be 119 * greater than the actual number. 120 */ --- 143 unchanged lines hidden (view full) --- 264 count += *(int *)((char *)&pcpu->pc_cnt + offset); 265 } 266#else 267 count += *(int *)((char *)PCPU_PTR(cnt) + offset); 268#endif 269 return (SYSCTL_OUT(req, &count, sizeof(int))); 270} 271 |
272SYSCTL_PROC(_vm, VM_TOTAL, vmtotal, CTLTYPE_OPAQUE|CTLFLAG_RD, | 272SYSCTL_PROC(_vm, VM_TOTAL, vmtotal, CTLTYPE_OPAQUE|CTLFLAG_RD|CTLFLAG_MPSAFE, |
273 0, sizeof(struct vmtotal), vmtotal, "S,vmtotal", 274 "System virtual memory statistics"); 275SYSCTL_NODE(_vm, OID_AUTO, stats, CTLFLAG_RW, 0, "VM meter stats"); 276static SYSCTL_NODE(_vm_stats, OID_AUTO, sys, CTLFLAG_RW, 0, 277 "VM meter sys stats"); 278static SYSCTL_NODE(_vm_stats, OID_AUTO, vm, CTLFLAG_RW, 0, 279 "VM meter vm stats"); 280SYSCTL_NODE(_vm_stats, OID_AUTO, misc, CTLFLAG_RW, 0, "VM meter misc stats"); 281 | 273 0, sizeof(struct vmtotal), vmtotal, "S,vmtotal", 274 "System virtual memory statistics"); 275SYSCTL_NODE(_vm, OID_AUTO, stats, CTLFLAG_RW, 0, "VM meter stats"); 276static SYSCTL_NODE(_vm_stats, OID_AUTO, sys, CTLFLAG_RW, 0, 277 "VM meter sys stats"); 278static SYSCTL_NODE(_vm_stats, OID_AUTO, vm, CTLFLAG_RW, 0, 279 "VM meter vm stats"); 280SYSCTL_NODE(_vm_stats, OID_AUTO, misc, CTLFLAG_RW, 0, "VM meter misc stats"); 281 |
282SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_swtch, CTLTYPE_UINT|CTLFLAG_RD, | 282SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_swtch, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
283 &cnt.v_swtch, 0, vcnt, "IU", "Context switches"); | 283 &cnt.v_swtch, 0, vcnt, "IU", "Context switches"); |
284SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_trap, CTLTYPE_UINT|CTLFLAG_RD, | 284SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_trap, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
285 &cnt.v_trap, 0, vcnt, "IU", "Traps"); | 285 &cnt.v_trap, 0, vcnt, "IU", "Traps"); |
286SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_syscall, CTLTYPE_UINT|CTLFLAG_RD, | 286SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_syscall, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
287 &cnt.v_syscall, 0, vcnt, "IU", "Syscalls"); | 287 &cnt.v_syscall, 0, vcnt, "IU", "Syscalls"); |
288SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_intr, CTLTYPE_UINT|CTLFLAG_RD, | 288SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_intr, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
289 &cnt.v_intr, 0, vcnt, "IU", "Hardware interrupts"); | 289 &cnt.v_intr, 0, vcnt, "IU", "Hardware interrupts"); |
290SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_soft, CTLTYPE_UINT|CTLFLAG_RD, | 290SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_soft, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
291 &cnt.v_soft, 0, vcnt, "IU", "Software interrupts"); | 291 &cnt.v_soft, 0, vcnt, "IU", "Software interrupts"); |
292SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vm_faults, CTLTYPE_UINT|CTLFLAG_RD, | 292SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vm_faults, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
293 &cnt.v_vm_faults, 0, vcnt, "IU", "VM faults"); | 293 &cnt.v_vm_faults, 0, vcnt, "IU", "VM faults"); |
294SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cow_faults, CTLTYPE_UINT|CTLFLAG_RD, | 294SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cow_faults, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
295 &cnt.v_cow_faults, 0, vcnt, "IU", "COW faults"); | 295 &cnt.v_cow_faults, 0, vcnt, "IU", "COW faults"); |
296SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cow_optim, CTLTYPE_UINT|CTLFLAG_RD, | 296SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cow_optim, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
297 &cnt.v_cow_optim, 0, vcnt, "IU", "Optimized COW faults"); | 297 &cnt.v_cow_optim, 0, vcnt, "IU", "Optimized COW faults"); |
298SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_zfod, CTLTYPE_UINT|CTLFLAG_RD, | 298SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_zfod, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
299 &cnt.v_zfod, 0, vcnt, "IU", "Zero fill"); | 299 &cnt.v_zfod, 0, vcnt, "IU", "Zero fill"); |
300SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_ozfod, CTLTYPE_UINT|CTLFLAG_RD, | 300SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_ozfod, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
301 &cnt.v_ozfod, 0, vcnt, "IU", "Optimized zero fill"); | 301 &cnt.v_ozfod, 0, vcnt, "IU", "Optimized zero fill"); |
302SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swapin, CTLTYPE_UINT|CTLFLAG_RD, | 302SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swapin, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
303 &cnt.v_swapin, 0, vcnt, "IU", "Swapin operations"); | 303 &cnt.v_swapin, 0, vcnt, "IU", "Swapin operations"); |
304SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swapout, CTLTYPE_UINT|CTLFLAG_RD, | 304SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swapout, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
305 &cnt.v_swapout, 0, vcnt, "IU", "Swapout operations"); | 305 &cnt.v_swapout, 0, vcnt, "IU", "Swapout operations"); |
306SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swappgsin, CTLTYPE_UINT|CTLFLAG_RD, | 306SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swappgsin, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
307 &cnt.v_swappgsin, 0, vcnt, "IU", "Swapin pages"); | 307 &cnt.v_swappgsin, 0, vcnt, "IU", "Swapin pages"); |
308SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swappgsout, CTLTYPE_UINT|CTLFLAG_RD, | 308SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swappgsout, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
309 &cnt.v_swappgsout, 0, vcnt, "IU", "Swapout pages"); | 309 &cnt.v_swappgsout, 0, vcnt, "IU", "Swapout pages"); |
310SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodein, CTLTYPE_UINT|CTLFLAG_RD, | 310SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodein, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
311 &cnt.v_vnodein, 0, vcnt, "IU", "Vnodein operations"); | 311 &cnt.v_vnodein, 0, vcnt, "IU", "Vnodein operations"); |
312SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodeout, CTLTYPE_UINT|CTLFLAG_RD, | 312SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodeout, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
313 &cnt.v_vnodeout, 0, vcnt, "IU", "Vnodeout operations"); | 313 &cnt.v_vnodeout, 0, vcnt, "IU", "Vnodeout operations"); |
314SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodepgsin, CTLTYPE_UINT|CTLFLAG_RD, | 314SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodepgsin, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
315 &cnt.v_vnodepgsin, 0, vcnt, "IU", "Vnodein pages"); | 315 &cnt.v_vnodepgsin, 0, vcnt, "IU", "Vnodein pages"); |
316SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodepgsout, CTLTYPE_UINT|CTLFLAG_RD, | 316SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodepgsout, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
317 &cnt.v_vnodepgsout, 0, vcnt, "IU", "Vnodeout pages"); | 317 &cnt.v_vnodepgsout, 0, vcnt, "IU", "Vnodeout pages"); |
318SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_intrans, CTLTYPE_UINT|CTLFLAG_RD, | 318SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_intrans, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
319 &cnt.v_intrans, 0, vcnt, "IU", "In transit page blocking"); | 319 &cnt.v_intrans, 0, vcnt, "IU", "In transit page blocking"); |
320SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_reactivated, CTLTYPE_UINT|CTLFLAG_RD, | 320SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_reactivated, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
321 &cnt.v_reactivated, 0, vcnt, "IU", "Reactivated pages"); | 321 &cnt.v_reactivated, 0, vcnt, "IU", "Reactivated pages"); |
322SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pdwakeups, CTLTYPE_UINT|CTLFLAG_RD, | 322SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pdwakeups, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
323 &cnt.v_pdwakeups, 0, vcnt, "IU", "Pagedaemon wakeups"); | 323 &cnt.v_pdwakeups, 0, vcnt, "IU", "Pagedaemon wakeups"); |
324SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pdpages, CTLTYPE_UINT|CTLFLAG_RD, | 324SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pdpages, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
325 &cnt.v_pdpages, 0, vcnt, "IU", "Pagedaemon page scans"); | 325 &cnt.v_pdpages, 0, vcnt, "IU", "Pagedaemon page scans"); |
326SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_tcached, CTLTYPE_UINT|CTLFLAG_RD, | 326SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_tcached, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
327 &cnt.v_tcached, 0, vcnt, "IU", "Total pages cached"); | 327 &cnt.v_tcached, 0, vcnt, "IU", "Total pages cached"); |
328SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_dfree, CTLTYPE_UINT|CTLFLAG_RD, | 328SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_dfree, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
329 &cnt.v_dfree, 0, vcnt, "IU", ""); | 329 &cnt.v_dfree, 0, vcnt, "IU", ""); |
330SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pfree, CTLTYPE_UINT|CTLFLAG_RD, | 330SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pfree, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
331 &cnt.v_pfree, 0, vcnt, "IU", ""); | 331 &cnt.v_pfree, 0, vcnt, "IU", ""); |
332SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_tfree, CTLTYPE_UINT|CTLFLAG_RD, | 332SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_tfree, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
333 &cnt.v_tfree, 0, vcnt, "IU", ""); | 333 &cnt.v_tfree, 0, vcnt, "IU", ""); |
334SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_page_size, CTLTYPE_UINT|CTLFLAG_RD, | 334SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_page_size, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
335 &cnt.v_page_size, 0, vcnt, "IU", ""); | 335 &cnt.v_page_size, 0, vcnt, "IU", ""); |
336SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_page_count, CTLTYPE_UINT|CTLFLAG_RD, | 336SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_page_count, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
337 &cnt.v_page_count, 0, vcnt, "IU", ""); | 337 &cnt.v_page_count, 0, vcnt, "IU", ""); |
338SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_reserved, CTLTYPE_UINT|CTLFLAG_RD, | 338SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_reserved, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
339 &cnt.v_free_reserved, 0, vcnt, "IU", ""); | 339 &cnt.v_free_reserved, 0, vcnt, "IU", ""); |
340SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_target, CTLTYPE_UINT|CTLFLAG_RD, | 340SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_target, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
341 &cnt.v_free_target, 0, vcnt, "IU", ""); | 341 &cnt.v_free_target, 0, vcnt, "IU", ""); |
342SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_min, CTLTYPE_UINT|CTLFLAG_RD, | 342SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_min, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
343 &cnt.v_free_min, 0, vcnt, "IU", ""); | 343 &cnt.v_free_min, 0, vcnt, "IU", ""); |
344SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_count, CTLTYPE_UINT|CTLFLAG_RD, | 344SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_count, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
345 &cnt.v_free_count, 0, vcnt, "IU", ""); | 345 &cnt.v_free_count, 0, vcnt, "IU", ""); |
346SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_wire_count, CTLTYPE_UINT|CTLFLAG_RD, | 346SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_wire_count, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
347 &cnt.v_wire_count, 0, vcnt, "IU", ""); | 347 &cnt.v_wire_count, 0, vcnt, "IU", ""); |
348SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_active_count, CTLTYPE_UINT|CTLFLAG_RD, | 348SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_active_count, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
349 &cnt.v_active_count, 0, vcnt, "IU", ""); | 349 &cnt.v_active_count, 0, vcnt, "IU", ""); |
350SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_inactive_target, CTLTYPE_UINT|CTLFLAG_RD, | 350SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_inactive_target, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
351 &cnt.v_inactive_target, 0, vcnt, "IU", ""); | 351 &cnt.v_inactive_target, 0, vcnt, "IU", ""); |
352SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_inactive_count, CTLTYPE_UINT|CTLFLAG_RD, | 352SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_inactive_count, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
353 &cnt.v_inactive_count, 0, vcnt, "IU", ""); | 353 &cnt.v_inactive_count, 0, vcnt, "IU", ""); |
354SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_count, CTLTYPE_UINT|CTLFLAG_RD, | 354SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_count, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
355 &cnt.v_cache_count, 0, vcnt, "IU", ""); | 355 &cnt.v_cache_count, 0, vcnt, "IU", ""); |
356SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_min, CTLTYPE_UINT|CTLFLAG_RD, | 356SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_min, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
357 &cnt.v_cache_min, 0, vcnt, "IU", ""); | 357 &cnt.v_cache_min, 0, vcnt, "IU", ""); |
358SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_max, CTLTYPE_UINT|CTLFLAG_RD, | 358SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_max, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
359 &cnt.v_cache_max, 0, vcnt, "IU", ""); | 359 &cnt.v_cache_max, 0, vcnt, "IU", ""); |
360SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pageout_free_min, CTLTYPE_UINT|CTLFLAG_RD, | 360SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pageout_free_min, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
361 &cnt.v_pageout_free_min, 0, vcnt, "IU", ""); | 361 &cnt.v_pageout_free_min, 0, vcnt, "IU", ""); |
362SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_interrupt_free_min, CTLTYPE_UINT|CTLFLAG_RD, | 362SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_interrupt_free_min, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
363 &cnt.v_interrupt_free_min, 0, vcnt, "IU", ""); | 363 &cnt.v_interrupt_free_min, 0, vcnt, "IU", ""); |
364SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_forks, CTLTYPE_UINT|CTLFLAG_RD, | 364SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_forks, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
365 &cnt.v_forks, 0, vcnt, "IU", "Number of fork() calls"); | 365 &cnt.v_forks, 0, vcnt, "IU", "Number of fork() calls"); |
366SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vforks, CTLTYPE_UINT|CTLFLAG_RD, | 366SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vforks, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
367 &cnt.v_vforks, 0, vcnt, "IU", "Number of vfork() calls"); | 367 &cnt.v_vforks, 0, vcnt, "IU", "Number of vfork() calls"); |
368SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_rforks, CTLTYPE_UINT|CTLFLAG_RD, | 368SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_rforks, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
369 &cnt.v_rforks, 0, vcnt, "IU", "Number of rfork() calls"); | 369 &cnt.v_rforks, 0, vcnt, "IU", "Number of rfork() calls"); |
370SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_kthreads, CTLTYPE_UINT|CTLFLAG_RD, | 370SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_kthreads, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
371 &cnt.v_kthreads, 0, vcnt, "IU", "Number of fork() calls by kernel"); | 371 &cnt.v_kthreads, 0, vcnt, "IU", "Number of fork() calls by kernel"); |
372SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_forkpages, CTLTYPE_UINT|CTLFLAG_RD, | 372SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_forkpages, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
373 &cnt.v_forkpages, 0, vcnt, "IU", "VM pages affected by fork()"); | 373 &cnt.v_forkpages, 0, vcnt, "IU", "VM pages affected by fork()"); |
374SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vforkpages, CTLTYPE_UINT|CTLFLAG_RD, | 374SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vforkpages, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
375 &cnt.v_vforkpages, 0, vcnt, "IU", "VM pages affected by vfork()"); | 375 &cnt.v_vforkpages, 0, vcnt, "IU", "VM pages affected by vfork()"); |
376SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_rforkpages, CTLTYPE_UINT|CTLFLAG_RD, | 376SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_rforkpages, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
377 &cnt.v_rforkpages, 0, vcnt, "IU", "VM pages affected by rfork()"); | 377 &cnt.v_rforkpages, 0, vcnt, "IU", "VM pages affected by rfork()"); |
378SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_kthreadpages, CTLTYPE_UINT|CTLFLAG_RD, | 378SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_kthreadpages, CTLTYPE_UINT|CTLFLAG_RD|CTLFLAG_MPSAFE, |
379 &cnt.v_kthreadpages, 0, vcnt, "IU", "VM pages affected by fork() by kernel"); 380 381SYSCTL_INT(_vm_stats_misc, OID_AUTO, 382 zero_page_count, CTLFLAG_RD, &vm_page_zero_count, 0, ""); | 379 &cnt.v_kthreadpages, 0, vcnt, "IU", "VM pages affected by fork() by kernel"); 380 381SYSCTL_INT(_vm_stats_misc, OID_AUTO, 382 zero_page_count, CTLFLAG_RD, &vm_page_zero_count, 0, ""); |