diff options
Diffstat (limited to 'sys/kern/kern_sysctl.c')
-rw-r--r-- | sys/kern/kern_sysctl.c | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c index ae16dec..63e8dd6 100644 --- a/sys/kern/kern_sysctl.c +++ b/sys/kern/kern_sysctl.c @@ -34,6 +34,7 @@ * SUCH DAMAGE. * * @(#)kern_sysctl.c 8.4 (Berkeley) 4/14/94 + * $Id: kern_sysctl.c,v 1.7 1994/08/10 06:25:02 wollman Exp $ */ /* @@ -89,7 +90,7 @@ __sysctl(p, uap, retval) int *retval; { int error, dolock = 1; - u_int savelen, oldlen = 0; + u_int savelen = 0, oldlen = 0; sysctlfn *fn; int name[CTL_MAXNAME]; @@ -175,12 +176,18 @@ __sysctl(p, uap, retval) */ char hostname[MAXHOSTNAMELEN]; int hostnamelen; +char domainname[MAXHOSTNAMELEN]; +int domainnamelen; long hostid; -int securelevel; +int securelevel = -1; +extern int vfs_update_wakeup; +extern int vfs_update_interval; +extern int osreldate; /* * kernel related system variables. */ +int kern_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p) int *name; u_int namelen; @@ -191,7 +198,7 @@ kern_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p) struct proc *p; { int error, level, inthostid; - extern char ostype[], osrelease[], version[]; + extern char ostype[], osrelease[]; /* all sysctl names at this level are terminal */ if (namelen != 1 && !(name[0] == KERN_PROC || name[0] == KERN_PROF)) @@ -206,12 +213,26 @@ kern_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p) return (sysctl_rdint(oldp, oldlenp, newp, BSD)); case KERN_VERSION: return (sysctl_rdstring(oldp, oldlenp, newp, version)); + case KERN_OSRELDATE: + return (sysctl_rdint(oldp, oldlenp, newp, osreldate)); case KERN_MAXVNODES: return(sysctl_int(oldp, oldlenp, newp, newlen, &desiredvnodes)); case KERN_MAXPROC: return (sysctl_int(oldp, oldlenp, newp, newlen, &maxproc)); case KERN_MAXFILES: return (sysctl_int(oldp, oldlenp, newp, newlen, &maxfiles)); + case KERN_UPDATEINTERVAL: + /* + * NB: this simple-minded approach only works because + * `tsleep' takes a timeout argument of 0 as meaning + * `no timeout'. + */ + error = sysctl_int(oldp, oldlenp, newp, newlen, + &vfs_update_interval); + if(!error) { + wakeup(&vfs_update_wakeup); + } + return error; case KERN_ARGMAX: return (sysctl_rdint(oldp, oldlenp, newp, ARG_MAX)); case KERN_SECURELVL: @@ -229,6 +250,12 @@ kern_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p) if (newp && !error) hostnamelen = newlen; return (error); + case KERN_DOMAINNAME: + error = sysctl_string(oldp, oldlenp, newp, newlen, + domainname, sizeof(domainname)); + if (newp && !error) + domainnamelen = newlen; + return (error); case KERN_HOSTID: inthostid = hostid; /* XXX assumes sizeof long <= sizeof int */ error = sysctl_int(oldp, oldlenp, newp, newlen, &inthostid); @@ -271,6 +298,7 @@ kern_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p) /* * hardware related system variables. */ +int hw_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p) int *name; u_int namelen; @@ -356,6 +384,7 @@ debug_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p) * Validate parameters and get old / set new parameters * for an integer-valued sysctl function. */ +int sysctl_int(oldp, oldlenp, newp, newlen, valp) void *oldp; size_t *oldlenp; @@ -380,6 +409,7 @@ sysctl_int(oldp, oldlenp, newp, newlen, valp) /* * As above, but read-only. */ +int sysctl_rdint(oldp, oldlenp, newp, val) void *oldp; size_t *oldlenp; @@ -402,6 +432,7 @@ sysctl_rdint(oldp, oldlenp, newp, val) * Validate parameters and get old / set new parameters * for a string-valued sysctl function. */ +int sysctl_string(oldp, oldlenp, newp, newlen, str, maxlen) void *oldp; size_t *oldlenp; @@ -431,6 +462,7 @@ sysctl_string(oldp, oldlenp, newp, newlen, str, maxlen) /* * As above, but read-only. */ +int sysctl_rdstring(oldp, oldlenp, newp, str) void *oldp; size_t *oldlenp; @@ -454,6 +486,7 @@ sysctl_rdstring(oldp, oldlenp, newp, str) * Validate parameters and get old / set new parameters * for a structure oriented sysctl function. */ +int sysctl_struct(oldp, oldlenp, newp, newlen, sp, len) void *oldp; size_t *oldlenp; @@ -481,6 +514,7 @@ sysctl_struct(oldp, oldlenp, newp, newlen, sp, len) * Validate parameters and get old parameters * for a structure oriented sysctl function. */ +int sysctl_rdstruct(oldp, oldlenp, newp, sp, len) void *oldp; size_t *oldlenp; @@ -502,6 +536,7 @@ sysctl_rdstruct(oldp, oldlenp, newp, sp, len) /* * Get file structures. */ +int sysctl_file(where, sizep) char *where; size_t *sizep; @@ -553,6 +588,7 @@ sysctl_file(where, sizep) */ #define KERN_PROCSLOP (5 * sizeof (struct kinfo_proc)) +int sysctl_doproc(name, namelen, where, sizep) int *name; u_int namelen; @@ -718,6 +754,7 @@ struct getkerninfo_args { int arg; }; +int ogetkerninfo(p, uap, retval) struct proc *p; register struct getkerninfo_args *uap; |