Module Name: src Committed By: pooka Date: Fri Sep 20 16:49:00 UTC 2013
Modified Files: src/sys/rump/librump/rumpdev: Makefile.rumpdev autoconf.c rump_dev.c rump_dev_private.h Added Files: src/sys/rump/librump/rumpdev: MAINBUS.ioconf Log Message: use ioconf for mainbus To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/sys/rump/librump/rumpdev/MAINBUS.ioconf cvs rdiff -u -r1.7 -r1.8 src/sys/rump/librump/rumpdev/Makefile.rumpdev \ src/sys/rump/librump/rumpdev/autoconf.c cvs rdiff -u -r1.23 -r1.24 src/sys/rump/librump/rumpdev/rump_dev.c cvs rdiff -u -r1.12 -r1.13 src/sys/rump/librump/rumpdev/rump_dev_private.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/rump/librump/rumpdev/Makefile.rumpdev diff -u src/sys/rump/librump/rumpdev/Makefile.rumpdev:1.7 src/sys/rump/librump/rumpdev/Makefile.rumpdev:1.8 --- src/sys/rump/librump/rumpdev/Makefile.rumpdev:1.7 Thu Sep 19 17:55:22 2013 +++ src/sys/rump/librump/rumpdev/Makefile.rumpdev Fri Sep 20 16:49:00 2013 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.rumpdev,v 1.7 2013/09/19 17:55:22 pooka Exp $ +# $NetBSD: Makefile.rumpdev,v 1.8 2013/09/20 16:49:00 pooka Exp $ # LIB= rumpdev @@ -6,6 +6,9 @@ LIB= rumpdev .PATH: ${RUMPTOP}/librump/rumpdev \ ${RUMPTOP}/../kern +IOCONFDIR:= ${.PARSEDIR} +IOCONF= MAINBUS.ioconf + SRCS= rump_dev.c autoconf.c # sys/kern Index: src/sys/rump/librump/rumpdev/autoconf.c diff -u src/sys/rump/librump/rumpdev/autoconf.c:1.7 src/sys/rump/librump/rumpdev/autoconf.c:1.8 --- src/sys/rump/librump/rumpdev/autoconf.c:1.7 Sat Oct 27 17:18:40 2012 +++ src/sys/rump/librump/rumpdev/autoconf.c Fri Sep 20 16:49:00 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: autoconf.c,v 1.7 2012/10/27 17:18:40 chs Exp $ */ +/* $NetBSD: autoconf.c,v 1.8 2013/09/20 16:49:00 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.7 2012/10/27 17:18:40 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.8 2013/09/20 16:49:00 pooka Exp $"); #include <sys/param.h> #include <sys/device.h> @@ -41,29 +41,21 @@ struct mainbus_softc { }; /* - * Initial lists. Should ingrate with config better. + * Initial lists as required by autoconf(9). The data from ioconf.c + * is patched in by rump_mainbus_init(). */ const struct cfattachinit cfattachinit[] = { { NULL, NULL }, }; struct cfdata cfdata[] = { - { "mainbus", "mainbus", 0, FSTATE_NOTFOUND, NULL, 0, NULL}, + { NULL, NULL, 0, FSTATE_NOTFOUND, NULL, 0, NULL}, /* replaced by init */ { NULL, NULL, 0, FSTATE_NOTFOUND, NULL, 0, NULL}, }; struct cfdriver * const cfdriver_list_initial[] = { - NULL + NULL, }; -static const struct cfiattrdata mainbuscf_iattrdata = { - "mainbus", 0, { - { NULL, NULL, 0 }, - } -}; -static const struct cfiattrdata * const mainbus_attrs[] = { - &mainbuscf_iattrdata, - NULL -}; -CFDRIVER_DECL(mainbus, DV_DULL, mainbus_attrs); +#include "ioconf.c" CFATTACH_DECL_NEW(mainbus, sizeof(struct mainbus_softc), mainbus_match, mainbus_attach, NULL, NULL); @@ -102,14 +94,14 @@ rump_pdev_finalize() rump_pdev_add(NULL, 0); } -int +static int mainbus_match(device_t parent, cfdata_t match, void *aux) { return 1; } -void +static void mainbus_attach(device_t parent, device_t self, void *aux) { @@ -128,3 +120,21 @@ mainbus_search(device_t parent, cfdata_t return 0; } + +void +rump_mainbus_init(void) +{ + + /* replace cfdata[0] to a state expected by autoconf(9) */ + memcpy(&cfdata[0], &cfdata_ioconf_mainbus[0], sizeof(cfdata[0])); +} + +void +rump_mainbus_attach(void) +{ + const struct cfattachinit *cfai = &cfattach_ioconf_mainbus[0]; + + config_cfdata_attach(cfdata, 0); + config_cfdriver_attach(cfdriver_ioconf_mainbus[0]); + config_cfattach_attach(cfai->cfai_name, cfai->cfai_list[0]); +} Index: src/sys/rump/librump/rumpdev/rump_dev.c diff -u src/sys/rump/librump/rumpdev/rump_dev.c:1.23 src/sys/rump/librump/rumpdev/rump_dev.c:1.24 --- src/sys/rump/librump/rumpdev/rump_dev.c:1.23 Tue Sep 17 23:55:16 2013 +++ src/sys/rump/librump/rumpdev/rump_dev.c Fri Sep 20 16:49:00 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rump_dev.c,v 1.23 2013/09/17 23:55:16 pooka Exp $ */ +/* $NetBSD: rump_dev.c,v 1.24 2013/09/20 16:49:00 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rump_dev.c,v 1.23 2013/09/17 23:55:16 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rump_dev.c,v 1.24 2013/09/20 16:49:00 pooka Exp $"); #include <sys/param.h> #include <sys/device.h> @@ -48,6 +48,7 @@ RUMP_COMPONENT(RUMP__FACTION_DEV) KERNEL_LOCK(1, curlwp); + rump_mainbus_init(); config_init_mi(); rump_component_init(RUMP_COMPONENT_DEV); @@ -62,13 +63,7 @@ RUMP_COMPONENT(RUMP__FACTION_DEV) */ if (rump_component_count(RUMP_COMPONENT_DEV) > 0 || rump_component_count(RUMP_COMPONENT_DEV_AFTERMAINBUS) > 0) { - extern struct cfdriver mainbus_cd; - extern struct cfattach mainbus_ca; - extern struct cfdata cfdata[]; - - config_cfdata_attach(cfdata, 0); - config_cfdriver_attach(&mainbus_cd); - config_cfattach_attach("mainbus", &mainbus_ca); + rump_mainbus_attach(); if (config_rootfound("mainbus", NULL) == NULL) panic("no mainbus"); Index: src/sys/rump/librump/rumpdev/rump_dev_private.h diff -u src/sys/rump/librump/rumpdev/rump_dev_private.h:1.12 src/sys/rump/librump/rumpdev/rump_dev_private.h:1.13 --- src/sys/rump/librump/rumpdev/rump_dev_private.h:1.12 Sun Jun 13 16:49:01 2010 +++ src/sys/rump/librump/rumpdev/rump_dev_private.h Fri Sep 20 16:49:00 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rump_dev_private.h,v 1.12 2010/06/13 16:49:01 pooka Exp $ */ +/* $NetBSD: rump_dev_private.h,v 1.13 2013/09/20 16:49:00 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -35,6 +35,9 @@ void rump_device_components(void); void rump_pdev_add(void (*fn)(int), int); void rump_pdev_finalize(void); +void rump_mainbus_init(void); +void rump_mainbus_attach(void); + struct mainbus_attach_args { int maa_unit; }; Added files: Index: src/sys/rump/librump/rumpdev/MAINBUS.ioconf diff -u /dev/null src/sys/rump/librump/rumpdev/MAINBUS.ioconf:1.1 --- /dev/null Fri Sep 20 16:49:00 2013 +++ src/sys/rump/librump/rumpdev/MAINBUS.ioconf Fri Sep 20 16:49:00 2013 @@ -0,0 +1,6 @@ +ioconf mainbus + +include "conf/files" +include "rump/dev/files.rump" + +mainbus0 at root