19454b2d8SWarner Losh /*- 2*51369649SPedro F. Giffuni * SPDX-License-Identifier: BSD-3-Clause 3*51369649SPedro F. Giffuni * 4df8bae1dSRodney W. Grimes * Copyright (c) 1980, 1986, 1989, 1993 5df8bae1dSRodney W. Grimes * The Regents of the University of California. All rights reserved. 6df8bae1dSRodney W. Grimes * (c) UNIX System Laboratories, Inc. 7df8bae1dSRodney W. Grimes * All or some portions of this file are derived from material licensed 8df8bae1dSRodney W. Grimes * to the University of California by American Telephone and Telegraph 9df8bae1dSRodney W. Grimes * Co. or Unix System Laboratories, Inc. and are reproduced herein with 10df8bae1dSRodney W. Grimes * the permission of UNIX System Laboratories, Inc. 11df8bae1dSRodney W. Grimes * 12df8bae1dSRodney W. Grimes * Redistribution and use in source and binary forms, with or without 13df8bae1dSRodney W. Grimes * modification, are permitted provided that the following conditions 14df8bae1dSRodney W. Grimes * are met: 15df8bae1dSRodney W. Grimes * 1. Redistributions of source code must retain the above copyright 16df8bae1dSRodney W. Grimes * notice, this list of conditions and the following disclaimer. 17df8bae1dSRodney W. Grimes * 2. Redistributions in binary form must reproduce the above copyright 18df8bae1dSRodney W. Grimes * notice, this list of conditions and the following disclaimer in the 19df8bae1dSRodney W. Grimes * documentation and/or other materials provided with the distribution. 2069a28758SEd Maste * 3. Neither the name of the University nor the names of its contributors 21df8bae1dSRodney W. Grimes * may be used to endorse or promote products derived from this software 22df8bae1dSRodney W. Grimes * without specific prior written permission. 23df8bae1dSRodney W. Grimes * 24df8bae1dSRodney W. Grimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 25df8bae1dSRodney W. Grimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26df8bae1dSRodney W. Grimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27df8bae1dSRodney W. Grimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 28df8bae1dSRodney W. Grimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29df8bae1dSRodney W. Grimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30df8bae1dSRodney W. Grimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31df8bae1dSRodney W. Grimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32df8bae1dSRodney W. Grimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33df8bae1dSRodney W. Grimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34df8bae1dSRodney W. Grimes * SUCH DAMAGE. 35df8bae1dSRodney W. Grimes * 3670b012caSJeffrey Hsu * @(#)param.c 8.3 (Berkeley) 8/20/94 37df8bae1dSRodney W. Grimes */ 38df8bae1dSRodney W. Grimes 39677b542eSDavid E. O'Brien #include <sys/cdefs.h> 40677b542eSDavid E. O'Brien __FBSDID("$FreeBSD$"); 41677b542eSDavid E. O'Brien 424bd49128SPeter Wemm #include "opt_param.h" 434053b05bSSergey Kandaurov #include "opt_msgbuf.h" 44ee342e1bSPeter Wemm #include "opt_maxusers.h" 4550c73f36SGarrett Wollman 46df8bae1dSRodney W. Grimes #include <sys/param.h> 47ee342e1bSPeter Wemm #include <sys/systm.h> 48ee342e1bSPeter Wemm #include <sys/kernel.h> 4902c6fc21SKonstantin Belousov #include <sys/limits.h> 504053b05bSSergey Kandaurov #include <sys/msgbuf.h> 5102c6fc21SKonstantin Belousov #include <sys/sysctl.h> 5202c6fc21SKonstantin Belousov #include <sys/proc.h> 53df8bae1dSRodney W. Grimes 54e9a3f785SAlan Cox #include <vm/vm.h> 557419d1e2SDag-Erling Smørgrav #include <vm/vm_param.h> 56e9a3f785SAlan Cox #include <vm/pmap.h> 57cbc89bfbSPaul Saab 58df8bae1dSRodney W. Grimes /* 59df8bae1dSRodney W. Grimes * System parameter formulae. 60df8bae1dSRodney W. Grimes */ 61df8bae1dSRodney W. Grimes 62df8bae1dSRodney W. Grimes #ifndef HZ 63bcebf6a1SNathan Whitehorn # if defined(__mips__) || defined(__arm__) 64df8bae1dSRodney W. Grimes # define HZ 100 65bcebf6a1SNathan Whitehorn # else 66bcebf6a1SNathan Whitehorn # define HZ 1000 67df8bae1dSRodney W. Grimes # endif 687f03c419SMaxim Sobolev # ifndef HZ_VM 69347e22a6SMike Silbersack # define HZ_VM 100 707f03c419SMaxim Sobolev # endif 717f03c419SMaxim Sobolev #else 727f03c419SMaxim Sobolev # ifndef HZ_VM 737f03c419SMaxim Sobolev # define HZ_VM HZ 747f03c419SMaxim Sobolev # endif 758f650450SPeter Wemm #endif 76ee342e1bSPeter Wemm #define NPROC (20 + 16 * maxusers) 77ee342e1bSPeter Wemm #ifndef NBUF 78ee342e1bSPeter Wemm #define NBUF 0 79ee342e1bSPeter Wemm #endif 805a00f364SDag-Erling Smørgrav #ifndef MAXFILES 811f57d8c6SKonstantin Belousov #define MAXFILES (40 + 32 * maxusers) 825a00f364SDag-Erling Smørgrav #endif 83dd0b2081SDavid Greenman 843610a226SIvan Voras static int sysctl_kern_vm_guest(SYSCTL_HANDLER_ARGS); 853610a226SIvan Voras 865b999a6bSDavide Italiano int hz; /* system clock's frequency */ 875b999a6bSDavide Italiano int tick; /* usec per tick (1000000 / hz) */ 885b999a6bSDavide Italiano struct bintime tick_bt; /* bintime per tick (1s / hz) */ 895b999a6bSDavide Italiano sbintime_t tick_sbt; 90ee342e1bSPeter Wemm int maxusers; /* base tunable */ 91ee342e1bSPeter Wemm int maxproc; /* maximum # of processes */ 92ee342e1bSPeter Wemm int maxprocperuid; /* max # of procs per user */ 93ee342e1bSPeter Wemm int maxfiles; /* sys. wide open files limit */ 94ee342e1bSPeter Wemm int maxfilesperproc; /* per-proc open files limit */ 954053b05bSSergey Kandaurov int msgbufsize; /* size of kernel message buffer */ 96ee342e1bSPeter Wemm int nbuf; 97ee75e7deSKonstantin Belousov int bio_transient_maxcnt; 98412f9500SBrooks Davis int ngroups_max; /* max # groups per process */ 99ee342e1bSPeter Wemm int nswbuf; 10002c6fc21SKonstantin Belousov pid_t pid_max = PID_MAX; 1015bd65606SJohn Baldwin long maxswzone; /* max swmeta KVA storage */ 1025bd65606SJohn Baldwin long maxbcache; /* max buffer cache KVA storage */ 10364ecd139SJohn Baldwin long maxpipekva; /* Limit on pipe KVA */ 10401e1933dSJohn Baldwin int vm_guest = VM_GUEST_NO; /* Running as virtual machine guest? */ 1057419d1e2SDag-Erling Smørgrav u_long maxtsiz; /* max text size */ 1067419d1e2SDag-Erling Smørgrav u_long dfldsiz; /* initial data size limit */ 1077419d1e2SDag-Erling Smørgrav u_long maxdsiz; /* max data size */ 1087419d1e2SDag-Erling Smørgrav u_long dflssiz; /* initial stack size limit */ 1097419d1e2SDag-Erling Smørgrav u_long maxssiz; /* max stack size */ 1107419d1e2SDag-Erling Smørgrav u_long sgrowsiz; /* amount to grow stack */ 111df8bae1dSRodney W. Grimes 112af3b2549SHans Petter Selasky SYSCTL_INT(_kern, OID_AUTO, hz, CTLFLAG_RDTUN | CTLFLAG_NOFETCH, &hz, 0, 1139b84ba1cSJohn Baldwin "Number of clock ticks per second"); 114af3b2549SHans Petter Selasky SYSCTL_INT(_kern, OID_AUTO, nbuf, CTLFLAG_RDTUN | CTLFLAG_NOFETCH, &nbuf, 0, 1159b84ba1cSJohn Baldwin "Number of buffers in the buffer cache"); 116af3b2549SHans Petter Selasky SYSCTL_INT(_kern, OID_AUTO, nswbuf, CTLFLAG_RDTUN | CTLFLAG_NOFETCH, &nswbuf, 0, 117b9f2a7daSJohn Baldwin "Number of swap buffers"); 118af3b2549SHans Petter Selasky SYSCTL_INT(_kern, OID_AUTO, msgbufsize, CTLFLAG_RDTUN | CTLFLAG_NOFETCH, &msgbufsize, 0, 1194053b05bSSergey Kandaurov "Size of the kernel message buffer"); 120af3b2549SHans Petter Selasky SYSCTL_LONG(_kern, OID_AUTO, maxswzone, CTLFLAG_RDTUN | CTLFLAG_NOFETCH, &maxswzone, 0, 1219b84ba1cSJohn Baldwin "Maximum memory for swap metadata"); 122af3b2549SHans Petter Selasky SYSCTL_LONG(_kern, OID_AUTO, maxbcache, CTLFLAG_RDTUN | CTLFLAG_NOFETCH, &maxbcache, 0, 1239b84ba1cSJohn Baldwin "Maximum value of vfs.maxbufspace"); 124af3b2549SHans Petter Selasky SYSCTL_INT(_kern, OID_AUTO, bio_transient_maxcnt, CTLFLAG_RDTUN | CTLFLAG_NOFETCH, 125ee75e7deSKonstantin Belousov &bio_transient_maxcnt, 0, 126ee75e7deSKonstantin Belousov "Maximum number of transient BIOs mappings"); 127af3b2549SHans Petter Selasky SYSCTL_ULONG(_kern, OID_AUTO, maxtsiz, CTLFLAG_RWTUN | CTLFLAG_NOFETCH, &maxtsiz, 0, 1289b84ba1cSJohn Baldwin "Maximum text size"); 129af3b2549SHans Petter Selasky SYSCTL_ULONG(_kern, OID_AUTO, dfldsiz, CTLFLAG_RWTUN | CTLFLAG_NOFETCH, &dfldsiz, 0, 1309b84ba1cSJohn Baldwin "Initial data size limit"); 131af3b2549SHans Petter Selasky SYSCTL_ULONG(_kern, OID_AUTO, maxdsiz, CTLFLAG_RWTUN | CTLFLAG_NOFETCH, &maxdsiz, 0, 1329b84ba1cSJohn Baldwin "Maximum data size"); 133af3b2549SHans Petter Selasky SYSCTL_ULONG(_kern, OID_AUTO, dflssiz, CTLFLAG_RWTUN | CTLFLAG_NOFETCH, &dflssiz, 0, 1349b84ba1cSJohn Baldwin "Initial stack size limit"); 135af3b2549SHans Petter Selasky SYSCTL_ULONG(_kern, OID_AUTO, maxssiz, CTLFLAG_RWTUN | CTLFLAG_NOFETCH, &maxssiz, 0, 1369b84ba1cSJohn Baldwin "Maximum stack size"); 137af3b2549SHans Petter Selasky SYSCTL_ULONG(_kern, OID_AUTO, sgrowsiz, CTLFLAG_RWTUN | CTLFLAG_NOFETCH, &sgrowsiz, 0, 138ceb0f715SAndrey Zonov "Amount to grow stack on a stack fault"); 1393610a226SIvan Voras SYSCTL_PROC(_kern, OID_AUTO, vm_guest, CTLFLAG_RD | CTLTYPE_STRING, 1403610a226SIvan Voras NULL, 0, sysctl_kern_vm_guest, "A", 14101e1933dSJohn Baldwin "Virtual machine guest detected?"); 1427c45a9c4SAlfred Perlstein 143df8bae1dSRodney W. Grimes /* 1440b993ee5SAlan Cox * The elements of this array are ordered based upon the values of the 1450b993ee5SAlan Cox * corresponding enum VM_GUEST members. 1460b993ee5SAlan Cox */ 14734820bbfSBjoern A. Zeeb static const char *const vm_guest_sysctl_names[] = { 14834820bbfSBjoern A. Zeeb "none", 14934820bbfSBjoern A. Zeeb "generic", 15034820bbfSBjoern A. Zeeb "xen", 15140b4cb0fSSergey Kandaurov "hv", 15201e1933dSJohn Baldwin "vmware", 153fdb6320dSEric Badger "kvm", 154e0a6a23cSMarcelo Araujo "bhyve", 15534820bbfSBjoern A. Zeeb NULL 15634820bbfSBjoern A. Zeeb }; 157903093ecSSergey Kandaurov CTASSERT(nitems(vm_guest_sysctl_names) - 1 == VM_LAST); 15834820bbfSBjoern A. Zeeb 1599722d88fSJason Evans /* 16066a11b9fSMatthew Dillon * Boot time overrides that are not scaled against main memory 161ee342e1bSPeter Wemm */ 162ee342e1bSPeter Wemm void 16366a11b9fSMatthew Dillon init_param1(void) 164ee342e1bSPeter Wemm { 16501e1933dSJohn Baldwin 166edc82223SKonstantin Belousov #if !defined(__mips__) && !defined(__arm64__) && !defined(__sparc64__) 167edc82223SKonstantin Belousov TUNABLE_INT_FETCH("kern.kstack_pages", &kstack_pages); 168edc82223SKonstantin Belousov #endif 1697f03c419SMaxim Sobolev hz = -1; 170ee342e1bSPeter Wemm TUNABLE_INT_FETCH("kern.hz", &hz); 1719bd2cbe4SJung-uk Kim if (hz == -1) 1723dc30911SIvan Voras hz = vm_guest > VM_GUEST_NO ? HZ_VM : HZ; 173ee342e1bSPeter Wemm tick = 1000000 / hz; 1745b999a6bSDavide Italiano tick_sbt = SBT_1S / hz; 1755b999a6bSDavide Italiano tick_bt = sbttobt(tick_sbt); 176ee342e1bSPeter Wemm 1775d8cce17SJohn Baldwin /* 1785d8cce17SJohn Baldwin * Arrange for ticks to wrap 10 minutes after boot to help catch 1795d8cce17SJohn Baldwin * sign problems sooner. 1805d8cce17SJohn Baldwin */ 1815d8cce17SJohn Baldwin ticks = INT_MAX - (hz * 10 * 60); 1825d8cce17SJohn Baldwin 183e1616f3aSMatthew Dillon #ifdef VM_SWZONE_SIZE_MAX 1842f9e4e80SMatthew Dillon maxswzone = VM_SWZONE_SIZE_MAX; 185e1616f3aSMatthew Dillon #endif 1865bd65606SJohn Baldwin TUNABLE_LONG_FETCH("kern.maxswzone", &maxswzone); 187e1616f3aSMatthew Dillon #ifdef VM_BCACHE_SIZE_MAX 1882f9e4e80SMatthew Dillon maxbcache = VM_BCACHE_SIZE_MAX; 189e1616f3aSMatthew Dillon #endif 1905bd65606SJohn Baldwin TUNABLE_LONG_FETCH("kern.maxbcache", &maxbcache); 1914053b05bSSergey Kandaurov msgbufsize = MSGBUF_SIZE; 1924053b05bSSergey Kandaurov TUNABLE_INT_FETCH("kern.msgbufsize", &msgbufsize); 193cbc89bfbSPaul Saab 194cbc89bfbSPaul Saab maxtsiz = MAXTSIZ; 1957419d1e2SDag-Erling Smørgrav TUNABLE_ULONG_FETCH("kern.maxtsiz", &maxtsiz); 196cbc89bfbSPaul Saab dfldsiz = DFLDSIZ; 1977419d1e2SDag-Erling Smørgrav TUNABLE_ULONG_FETCH("kern.dfldsiz", &dfldsiz); 198cbc89bfbSPaul Saab maxdsiz = MAXDSIZ; 1997419d1e2SDag-Erling Smørgrav TUNABLE_ULONG_FETCH("kern.maxdsiz", &maxdsiz); 200cbc89bfbSPaul Saab dflssiz = DFLSSIZ; 2017419d1e2SDag-Erling Smørgrav TUNABLE_ULONG_FETCH("kern.dflssiz", &dflssiz); 202cbc89bfbSPaul Saab maxssiz = MAXSSIZ; 2037419d1e2SDag-Erling Smørgrav TUNABLE_ULONG_FETCH("kern.maxssiz", &maxssiz); 204cbc89bfbSPaul Saab sgrowsiz = SGROWSIZ; 2057419d1e2SDag-Erling Smørgrav TUNABLE_ULONG_FETCH("kern.sgrowsiz", &sgrowsiz); 206412f9500SBrooks Davis 207412f9500SBrooks Davis /* 208412f9500SBrooks Davis * Let the administrator set {NGROUPS_MAX}, but disallow values 209412f9500SBrooks Davis * less than NGROUPS_MAX which would violate POSIX.1-2008 or 210412f9500SBrooks Davis * greater than INT_MAX-1 which would result in overflow. 211412f9500SBrooks Davis */ 212412f9500SBrooks Davis ngroups_max = NGROUPS_MAX; 213412f9500SBrooks Davis TUNABLE_INT_FETCH("kern.ngroups", &ngroups_max); 214412f9500SBrooks Davis if (ngroups_max < NGROUPS_MAX) 215412f9500SBrooks Davis ngroups_max = NGROUPS_MAX; 21602c6fc21SKonstantin Belousov 21702c6fc21SKonstantin Belousov /* 21802c6fc21SKonstantin Belousov * Only allow to lower the maximal pid. 2193fa615bcSKonstantin Belousov * Prevent setting up a non-bootable system if pid_max is too low. 22002c6fc21SKonstantin Belousov */ 22102c6fc21SKonstantin Belousov TUNABLE_INT_FETCH("kern.pid_max", &pid_max); 22202c6fc21SKonstantin Belousov if (pid_max > PID_MAX) 22302c6fc21SKonstantin Belousov pid_max = PID_MAX; 2243fa615bcSKonstantin Belousov else if (pid_max < 300) 2253fa615bcSKonstantin Belousov pid_max = 300; 226ee75e7deSKonstantin Belousov 227ee75e7deSKonstantin Belousov TUNABLE_INT_FETCH("vfs.unmapped_buf_allowed", &unmapped_buf_allowed); 228ee342e1bSPeter Wemm } 22966a11b9fSMatthew Dillon 23066a11b9fSMatthew Dillon /* 23166a11b9fSMatthew Dillon * Boot time overrides that are scaled against main memory 23266a11b9fSMatthew Dillon */ 23366a11b9fSMatthew Dillon void 234447b3772SPeter Wemm init_param2(long physpages) 23566a11b9fSMatthew Dillon { 23666a11b9fSMatthew Dillon 23766a11b9fSMatthew Dillon /* Base parameters */ 2380b94a0e9SMatthew Dillon maxusers = MAXUSERS; 2390b94a0e9SMatthew Dillon TUNABLE_INT_FETCH("kern.maxusers", &maxusers); 2400b94a0e9SMatthew Dillon if (maxusers == 0) { 2414fbd563eSMatthew Dillon maxusers = physpages / (2 * 1024 * 1024 / PAGE_SIZE); 24266a11b9fSMatthew Dillon if (maxusers < 32) 24366a11b9fSMatthew Dillon maxusers = 32; 24479f62ed6SAlfred Perlstein #ifdef VM_MAX_AUTOTUNE_MAXUSERS 24579f62ed6SAlfred Perlstein if (maxusers > VM_MAX_AUTOTUNE_MAXUSERS) 24679f62ed6SAlfred Perlstein maxusers = VM_MAX_AUTOTUNE_MAXUSERS; 24779f62ed6SAlfred Perlstein #endif 2487b6d92c0SAlfred Perlstein /* 24979f62ed6SAlfred Perlstein * Scales down the function in which maxusers grows once 25079f62ed6SAlfred Perlstein * we hit 384. 2517b6d92c0SAlfred Perlstein */ 25279f62ed6SAlfred Perlstein if (maxusers > 384) 25379f62ed6SAlfred Perlstein maxusers = 384 + ((maxusers - 384) / 8); 25466a11b9fSMatthew Dillon } 25566a11b9fSMatthew Dillon 25666a11b9fSMatthew Dillon /* 25766a11b9fSMatthew Dillon * The following can be overridden after boot via sysctl. Note: 25866a11b9fSMatthew Dillon * unless overriden, these macros are ultimately based on maxusers. 25977a7d074SMike Silbersack * Limit maxproc so that kmap entries cannot be exhausted by 26077a7d074SMike Silbersack * processes. 26177a7d074SMike Silbersack */ 262ead46972SAndre Oppermann maxproc = NPROC; 263ead46972SAndre Oppermann TUNABLE_INT_FETCH("kern.maxproc", &maxproc); 26477a7d074SMike Silbersack if (maxproc > (physpages / 12)) 26577a7d074SMike Silbersack maxproc = physpages / 12; 2661f57d8c6SKonstantin Belousov if (maxproc > pid_max) 2671f57d8c6SKonstantin Belousov maxproc = pid_max; 268ebacce5eSMike Silbersack maxprocperuid = (maxproc * 9) / 10; 269ead46972SAndre Oppermann 270ead46972SAndre Oppermann /* 271ead46972SAndre Oppermann * The default limit for maxfiles is 1/12 of the number of 272ead46972SAndre Oppermann * physical page but not less than 16 times maxusers. 273ead46972SAndre Oppermann * At most it can be 1/6 the number of physical pages. 274ead46972SAndre Oppermann */ 275ead46972SAndre Oppermann maxfiles = imax(MAXFILES, physpages / 8); 276ead46972SAndre Oppermann TUNABLE_INT_FETCH("kern.maxfiles", &maxfiles); 277ead46972SAndre Oppermann if (maxfiles > (physpages / 4)) 278ead46972SAndre Oppermann maxfiles = physpages / 4; 279ead46972SAndre Oppermann maxfilesperproc = (maxfiles / 10) * 9; 28032766cd2SAdrian Chadd TUNABLE_INT_FETCH("kern.maxfilesperproc", &maxfilesperproc); 28166a11b9fSMatthew Dillon 28266a11b9fSMatthew Dillon /* 283347194c1SMike Silbersack * Cannot be changed after boot. 284347194c1SMike Silbersack */ 285347194c1SMike Silbersack nbuf = NBUF; 286347194c1SMike Silbersack TUNABLE_INT_FETCH("kern.nbuf", &nbuf); 287ee75e7deSKonstantin Belousov TUNABLE_INT_FETCH("kern.bio_transient_maxcnt", &bio_transient_maxcnt); 288347194c1SMike Silbersack 289ead46972SAndre Oppermann /* 290e9a3f785SAlan Cox * The default for maxpipekva is min(1/64 of the kernel address space, 291e9a3f785SAlan Cox * max(1/64 of main memory, 512KB)). See sys_pipe.c for more details. 292347194c1SMike Silbersack */ 293e9a3f785SAlan Cox maxpipekva = (physpages / 64) * PAGE_SIZE; 294ead46972SAndre Oppermann TUNABLE_LONG_FETCH("kern.ipc.maxpipekva", &maxpipekva); 295289016f2SMike Silbersack if (maxpipekva < 512 * 1024) 296289016f2SMike Silbersack maxpipekva = 512 * 1024; 297e9a3f785SAlan Cox if (maxpipekva > (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) / 64) 298e9a3f785SAlan Cox maxpipekva = (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) / 299e9a3f785SAlan Cox 64; 30066a11b9fSMatthew Dillon } 3013610a226SIvan Voras 3023610a226SIvan Voras /* 30346038d7fSKonstantin Belousov * Sysctl stringifying handler for kern.vm_guest. 3043610a226SIvan Voras */ 3053610a226SIvan Voras static int 3063610a226SIvan Voras sysctl_kern_vm_guest(SYSCTL_HANDLER_ARGS) 3073610a226SIvan Voras { 308acfc962fSIan Lepore return (SYSCTL_OUT_STR(req, vm_guest_sysctl_names[vm_guest])); 3093610a226SIvan Voras } 310