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