From 86f087370bb4c3f371b619dbb53c2bf4051ccfb5 Mon Sep 17 00:00:00 2001 From: Robert Watson Date: Mon, 23 Feb 2009 23:00:12 +0000 Subject: [PATCH] Add a debugging sysctl, debug.vm_lowmem, that when assigned a value of 1 will trigger a pass through the VM's low-memory handlers, such as protocol and UMA drain routines. This makes it easier to exercise these otherwise rarely-invoked code paths. MFC after: 3 days --- sys/vm/vm_kern.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/sys/vm/vm_kern.c b/sys/vm/vm_kern.c index b43805885a5..f80ad30c48b 100644 --- a/sys/vm/vm_kern.c +++ b/sys/vm/vm_kern.c @@ -73,6 +73,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -500,3 +501,24 @@ kmem_init(start, end) /* ... and ending with the completion of the above `insert' */ vm_map_unlock(m); } + +/* + * Allow userspace to directly trigger the VM drain routine for testing + * purposes. + */ +static int +debug_vm_lowmem(SYSCTL_HANDLER_ARGS) +{ + int error, i; + + i = 0; + error = sysctl_handle_int(oidp, &i, 0, req); + if (error) + return (error); + if (i) + EVENTHANDLER_INVOKE(vm_lowmem, 0); + return (0); +} + +SYSCTL_PROC(_debug, OID_AUTO, vm_lowmem, CTLTYPE_INT | CTLFLAG_RW, 0, 0, + debug_vm_lowmem, "I", "set to trigger vm_lowmem event");