diff options
author | glebius <glebius@FreeBSD.org> | 2014-02-07 14:29:03 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2014-02-07 14:29:03 +0000 |
commit | e8c24265872af9ef671b8fd7e1c794ba891856bc (patch) | |
tree | 68a5dc7c463763f5c4e25deb81c1f1f438b82de4 /sys/vm | |
parent | 5e6abd57c88d32595f7376b349110b0969b157a7 (diff) | |
download | FreeBSD-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.c | 29 |
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) { |