summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_sysctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_sysctl.c')
-rw-r--r--sys/kern/kern_sysctl.c43
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;
OpenPOWER on IntegriCloud