summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2014-02-07 14:29:03 +0000
committerglebius <glebius@FreeBSD.org>2014-02-07 14:29:03 +0000
commite8c24265872af9ef671b8fd7e1c794ba891856bc (patch)
tree68a5dc7c463763f5c4e25deb81c1f1f438b82de4 /sys/vm
parent5e6abd57c88d32595f7376b349110b0969b157a7 (diff)
downloadFreeBSD-src-e8c24265872af9ef671b8fd7e1c794ba891856bc.zip
FreeBSD-src-e8c24265872af9ef671b8fd7e1c794ba891856bc.tar.gz
Provide macros that allow easily export uma(9) zone limits and
current usage via sysctl(9): SYSCTL_UMA_MAX() SYSCTL_ADD_UMA_MAX() SYSCTL_UMA_CUR() SYSCTL_ADD_UMA_CUR() Sponsored by: Nginx, Inc.
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/uma_core.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c
index 6030a15..d5b43c0 100644
--- a/sys/vm/uma_core.c
+++ b/sys/vm/uma_core.c
@@ -3465,6 +3465,35 @@ skip:
return (error);
}
+int
+sysctl_handle_uma_zone_max(SYSCTL_HANDLER_ARGS)
+{
+ uma_zone_t zone = *(uma_zone_t *)arg1;
+ int error, max, old;
+
+ old = max = uma_zone_get_max(zone);
+ error = sysctl_handle_int(oidp, &max, 0, req);
+ if (error || !req->newptr)
+ return (error);
+
+ if (max < old)
+ return (EINVAL);
+
+ uma_zone_set_max(zone, max);
+
+ return (0);
+}
+
+int
+sysctl_handle_uma_zone_cur(SYSCTL_HANDLER_ARGS)
+{
+ uma_zone_t zone = *(uma_zone_t *)arg1;
+ int cur;
+
+ cur = uma_zone_get_cur(zone);
+ return (sysctl_handle_int(oidp, &cur, 0, req));
+}
+
#ifdef DDB
DB_SHOW_COMMAND(uma, db_show_uma)
{
OpenPOWER on IntegriCloud