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

Reply via email to