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,