Module Name: src
Committed By: justin
Date: Tue Feb 25 01:02:42 UTC 2014
Modified Files:
src/sys/kern: init_sysctl.c init_sysctl_base.c
src/sys/rump/librump/rumpkern: rump.c
Log Message:
Add kern.{ostype,osrelease,osrevision,version} kern.domainname,
kern.rawpartition sysctl support to rump kernel.
Moved the sysctl support that is shared between rump and normal
kernels to init_sysctl_base.c as rump cannot use init_sysctl.c
in order to avoid code duplication. Agreed with pooka@.
To generate a diff of this commit:
cvs rdiff -u -r1.199 -r1.200 src/sys/kern/init_sysctl.c
cvs rdiff -u -r1.1 -r1.2 src/sys/kern/init_sysctl_base.c
cvs rdiff -u -r1.284 -r1.285 src/sys/rump/librump/rumpkern/rump.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/kern/init_sysctl.c
diff -u src/sys/kern/init_sysctl.c:1.199 src/sys/kern/init_sysctl.c:1.200
--- src/sys/kern/init_sysctl.c:1.199 Fri Jan 17 02:12:48 2014
+++ src/sys/kern/init_sysctl.c Tue Feb 25 01:02:42 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: init_sysctl.c,v 1.199 2014/01/17 02:12:48 pooka Exp $ */
+/* $NetBSD: init_sysctl.c,v 1.200 2014/02/25 01:02:42 justin Exp $ */
/*-
* Copyright (c) 2003, 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: init_sysctl.c,v 1.199 2014/01/17 02:12:48 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: init_sysctl.c,v 1.200 2014/02/25 01:02:42 justin Exp $");
#include "opt_sysv.h"
#include "opt_compat_netbsd.h"
@@ -105,7 +105,6 @@ static int sysctl_kern_maxvnodes(SYSCTLF
static int sysctl_kern_rtc_offset(SYSCTLFN_PROTO);
static int sysctl_kern_maxproc(SYSCTLFN_PROTO);
static int sysctl_kern_hostid(SYSCTLFN_PROTO);
-static int sysctl_setlen(SYSCTLFN_PROTO);
static int sysctl_kern_clockrate(SYSCTLFN_PROTO);
static int sysctl_msgbuf(SYSCTLFN_PROTO);
static int sysctl_kern_defcorename(SYSCTLFN_PROTO);
@@ -151,30 +150,6 @@ SYSCTL_SETUP(sysctl_kern_setup, "sysctl
CTL_KERN, CTL_EOL);
sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT,
- CTLTYPE_STRING, "ostype",
- SYSCTL_DESCR("Operating system type"),
- NULL, 0, __UNCONST(&ostype), 0,
- CTL_KERN, KERN_OSTYPE, CTL_EOL);
- sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT,
- CTLTYPE_STRING, "osrelease",
- SYSCTL_DESCR("Operating system release"),
- NULL, 0, __UNCONST(&osrelease), 0,
- CTL_KERN, KERN_OSRELEASE, CTL_EOL);
- sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE,
- CTLTYPE_INT, "osrevision",
- SYSCTL_DESCR("Operating system revision"),
- NULL, __NetBSD_Version__, NULL, 0,
- CTL_KERN, KERN_OSREV, CTL_EOL);
- sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT,
- CTLTYPE_STRING, "version",
- SYSCTL_DESCR("Kernel version"),
- NULL, 0, __UNCONST(&version), 0,
- CTL_KERN, KERN_VERSION, CTL_EOL);
- sysctl_createv(clog, 0, NULL, NULL,
CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
CTLTYPE_INT, "maxvnodes",
SYSCTL_DESCR("Maximum number of vnodes"),
@@ -200,12 +175,6 @@ SYSCTL_SETUP(sysctl_kern_setup, "sysctl
NULL, ARG_MAX, NULL, 0,
CTL_KERN, KERN_ARGMAX, CTL_EOL);
sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
- CTLTYPE_STRING, "hostname",
- SYSCTL_DESCR("System hostname"),
- sysctl_setlen, 0, hostname, MAXHOSTNAMELEN,
- CTL_KERN, KERN_HOSTNAME, CTL_EOL);
- sysctl_createv(clog, 0, NULL, NULL,
CTLFLAG_PERMANENT|CTLFLAG_READWRITE|CTLFLAG_HEX,
CTLTYPE_INT, "hostid",
SYSCTL_DESCR("System host ID number"),
@@ -282,12 +251,6 @@ SYSCTL_SETUP(sysctl_kern_setup, "sysctl
NULL, 0, &boottime, sizeof(boottime),
CTL_KERN, KERN_BOOTTIME, CTL_EOL);
sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
- CTLTYPE_STRING, "domainname",
- SYSCTL_DESCR("YP domain name"),
- sysctl_setlen, 0, domainname, MAXHOSTNAMELEN,
- CTL_KERN, KERN_DOMAINNAME, CTL_EOL);
- sysctl_createv(clog, 0, NULL, NULL,
CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE,
CTLTYPE_INT, "maxpartitions",
SYSCTL_DESCR("Maximum number of partitions allowed per "
@@ -295,12 +258,6 @@ SYSCTL_SETUP(sysctl_kern_setup, "sysctl
NULL, MAXPARTITIONS, NULL, 0,
CTL_KERN, KERN_MAXPARTITIONS, CTL_EOL);
sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE,
- CTLTYPE_INT, "rawpartition",
- SYSCTL_DESCR("Raw partition of a disk"),
- NULL, RAW_PART, NULL, 0,
- CTL_KERN, KERN_RAWPARTITION, CTL_EOL);
- sysctl_createv(clog, 0, NULL, NULL,
CTLFLAG_PERMANENT,
CTLTYPE_STRUCT, "timex", NULL,
sysctl_notavail, 0, NULL, 0,
@@ -1011,32 +968,6 @@ sysctl_kern_hostid(SYSCTLFN_ARGS)
}
/*
- * sysctl helper function for kern.hostname and kern.domainnname.
- * resets the relevant recorded length when the underlying name is
- * changed.
- */
-static int
-sysctl_setlen(SYSCTLFN_ARGS)
-{
- int error;
-
- error = sysctl_lookup(SYSCTLFN_CALL(rnode));
- if (error || newp == NULL)
- return (error);
-
- switch (rnode->sysctl_num) {
- case KERN_HOSTNAME:
- hostnamelen = strlen((const char*)rnode->sysctl_data);
- break;
- case KERN_DOMAINNAME:
- domainnamelen = strlen((const char*)rnode->sysctl_data);
- break;
- }
-
- return (0);
-}
-
-/*
* sysctl helper routine for kern.clockrate. Assembles a struct on
* the fly to be returned to the caller.
*/
Index: src/sys/kern/init_sysctl_base.c
diff -u src/sys/kern/init_sysctl_base.c:1.1 src/sys/kern/init_sysctl_base.c:1.2
--- src/sys/kern/init_sysctl_base.c:1.1 Wed Sep 16 15:03:56 2009
+++ src/sys/kern/init_sysctl_base.c Tue Feb 25 01:02:42 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: init_sysctl_base.c,v 1.1 2009/09/16 15:03:56 pooka Exp $ */
+/* $NetBSD: init_sysctl_base.c,v 1.2 2014/02/25 01:02:42 justin Exp $ */
/*-
* Copyright (c) 2003, 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -30,10 +30,14 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: init_sysctl_base.c,v 1.1 2009/09/16 15:03:56 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: init_sysctl_base.c,v 1.2 2014/02/25 01:02:42 justin Exp $");
#include <sys/param.h>
#include <sys/sysctl.h>
+#include <sys/kernel.h>
+#include <sys/disklabel.h>
+
+static int sysctl_setlen(SYSCTLFN_PROTO);
/*
* sets up the base nodes...
@@ -124,3 +128,85 @@ SYSCTL_SETUP(sysctl_root_setup, "sysctl
NULL, 0, NULL, 0,
CTL_SECURITY, CTL_EOL);
}
+
+/*
+ * now add some nodes which both rump kernel and standard
+ * NetBSD both need, as rump cannot use sys/kern/init_sysctl.c
+ */
+SYSCTL_SETUP(sysctl_kernbase_setup, "sysctl kern subtree base setup")
+{
+ sysctl_createv(clog, 0, NULL, NULL,
+ CTLFLAG_PERMANENT,
+ CTLTYPE_NODE, "kern", NULL,
+ NULL, 0, NULL, 0,
+ CTL_KERN, CTL_EOL);
+
+ sysctl_createv(clog, 0, NULL, NULL,
+ CTLFLAG_PERMANENT,
+ CTLTYPE_STRING, "ostype",
+ SYSCTL_DESCR("Operating system type"),
+ NULL, 0, __UNCONST(&ostype), 0,
+ CTL_KERN, KERN_OSTYPE, CTL_EOL);
+ sysctl_createv(clog, 0, NULL, NULL,
+ CTLFLAG_PERMANENT,
+ CTLTYPE_STRING, "osrelease",
+ SYSCTL_DESCR("Operating system release"),
+ NULL, 0, __UNCONST(&osrelease), 0,
+ CTL_KERN, KERN_OSRELEASE, CTL_EOL);
+ sysctl_createv(clog, 0, NULL, NULL,
+ CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE,
+ CTLTYPE_INT, "osrevision",
+ SYSCTL_DESCR("Operating system revision"),
+ NULL, __NetBSD_Version__, NULL, 0,
+ CTL_KERN, KERN_OSREV, CTL_EOL);
+ sysctl_createv(clog, 0, NULL, NULL,
+ CTLFLAG_PERMANENT,
+ CTLTYPE_STRING, "version",
+ SYSCTL_DESCR("Kernel version"),
+ NULL, 0, __UNCONST(&version), 0,
+ CTL_KERN, KERN_VERSION, CTL_EOL);
+ sysctl_createv(clog, 0, NULL, NULL,
+ CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
+ CTLTYPE_STRING, "hostname",
+ SYSCTL_DESCR("System hostname"),
+ sysctl_setlen, 0, hostname, MAXHOSTNAMELEN,
+ CTL_KERN, KERN_HOSTNAME, CTL_EOL);
+ sysctl_createv(clog, 0, NULL, NULL,
+ CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
+ CTLTYPE_STRING, "domainname",
+ SYSCTL_DESCR("YP domain name"),
+ sysctl_setlen, 0, domainname, MAXHOSTNAMELEN,
+ CTL_KERN, KERN_DOMAINNAME, CTL_EOL);
+ sysctl_createv(clog, 0, NULL, NULL,
+ CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE,
+ CTLTYPE_INT, "rawpartition",
+ SYSCTL_DESCR("Raw partition of a disk"),
+ NULL, RAW_PART, NULL, 0,
+ CTL_KERN, KERN_RAWPARTITION, CTL_EOL);
+}
+
+/*
+ * sysctl helper function for kern.hostname and kern.domainnname.
+ * resets the relevant recorded length when the underlying name is
+ * changed.
+ */
+static int
+sysctl_setlen(SYSCTLFN_ARGS)
+{
+ int error;
+
+ error = sysctl_lookup(SYSCTLFN_CALL(rnode));
+ if (error || newp == NULL)
+ return (error);
+
+ switch (rnode->sysctl_num) {
+ case KERN_HOSTNAME:
+ hostnamelen = strlen((const char*)rnode->sysctl_data);
+ break;
+ case KERN_DOMAINNAME:
+ domainnamelen = strlen((const char*)rnode->sysctl_data);
+ break;
+ }
+
+ return (0);
+}
Index: src/sys/rump/librump/rumpkern/rump.c
diff -u src/sys/rump/librump/rumpkern/rump.c:1.284 src/sys/rump/librump/rumpkern/rump.c:1.285
--- src/sys/rump/librump/rumpkern/rump.c:1.284 Wed Jan 29 18:42:14 2014
+++ src/sys/rump/librump/rumpkern/rump.c Tue Feb 25 01:02:42 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: rump.c,v 1.284 2014/01/29 18:42:14 pooka Exp $ */
+/* $NetBSD: rump.c,v 1.285 2014/02/25 01:02:42 justin Exp $ */
/*
* Copyright (c) 2007-2011 Antti Kantee. All Rights Reserved.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.284 2014/01/29 18:42:14 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.285 2014/02/25 01:02:42 justin Exp $");
#include <sys/systm.h>
#define ELFSIZE ARCH_ELFSIZE
@@ -168,16 +168,6 @@ static void
mksysctls(void)
{
- /* kern.hostname */
- sysctl_createv(NULL, 0, NULL, NULL,
- CTLFLAG_PERMANENT, CTLTYPE_NODE, "kern", NULL,
- NULL, 0, NULL, 0, CTL_KERN, CTL_EOL);
- /* XXX: setting hostnamelen is missing */
- sysctl_createv(NULL, 0, NULL, NULL,
- CTLFLAG_PERMANENT|CTLFLAG_READWRITE, CTLTYPE_STRING, "hostname",
- SYSCTL_DESCR("System hostname"), NULL, 0,
- hostname, MAXHOSTNAMELEN, CTL_KERN, KERN_HOSTNAME, CTL_EOL);
-
/* hw.pagesize */
sysctl_createv(NULL, 0, NULL, NULL,
CTLFLAG_PERMANENT,