Module Name: src Committed By: pooka Date: Mon Mar 1 13:12:21 UTC 2010
Modified Files: src/sys/rump: ldscript.rump src/sys/rump/dev/lib: Makefile.inc src/sys/rump/dev/lib/libbpf: component.c src/sys/rump/dev/lib/libcgd: component.c src/sys/rump/dev/lib/libdm: component.c src/sys/rump/dev/lib/libnetsmb: component.c src/sys/rump/dev/lib/libraidframe: component.c src/sys/rump/dev/lib/librnd: component.c src/sys/rump/dev/lib/libsysmon: component.c src/sys/rump/dev/lib/libucom: ucom_at_usb.c src/sys/rump/dev/lib/libulpt: ulpt_at_usb.c src/sys/rump/dev/lib/libumass: sd_at_scsibus_at_umass.c src/sys/rump/dev/lib/libwscons: component.c src/sys/rump/include/rump: rumpuser.h src/sys/rump/librump/rumpdev: rump_dev.c rump_dev_private.h src/sys/rump/librump/rumpkern: rump.c rump_private.h src/sys/rump/librump/rumpnet: rump_net.c rump_net_private.h src/sys/rump/net/lib: Makefile.inc src/sys/rump/net/lib/liblocal: component.c src/sys/rump/net/lib/libnet: component.c src/sys/rump/net/lib/libnetinet: component.c src/sys/rump/net/lib/libsockin: component.c src/sys/rump/net/lib/libvirtif: component.c Log Message: Introduce RUMP_COMPONENT. It behaves mostly like a simplified module which is linked into the kernel and cannot be unloaded. The main purpose is to get the proper constructors run and create any /dev nodes necessary for said component. Once more of the kernel (e.g. networking stack and device drivers) are converted to MODULE and devfs pops up from somewhere, rump components can be retired. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/rump/ldscript.rump cvs rdiff -u -r1.2 -r1.3 src/sys/rump/dev/lib/Makefile.inc cvs rdiff -u -r1.2 -r1.3 src/sys/rump/dev/lib/libbpf/component.c cvs rdiff -u -r1.5 -r1.6 src/sys/rump/dev/lib/libcgd/component.c cvs rdiff -u -r1.1 -r1.2 src/sys/rump/dev/lib/libdm/component.c cvs rdiff -u -r1.3 -r1.4 src/sys/rump/dev/lib/libnetsmb/component.c cvs rdiff -u -r1.4 -r1.5 src/sys/rump/dev/lib/libraidframe/component.c cvs rdiff -u -r1.2 -r1.3 src/sys/rump/dev/lib/librnd/component.c cvs rdiff -u -r1.1 -r1.2 src/sys/rump/dev/lib/libsysmon/component.c cvs rdiff -u -r1.2 -r1.3 src/sys/rump/dev/lib/libucom/ucom_at_usb.c cvs rdiff -u -r1.1 -r1.2 src/sys/rump/dev/lib/libulpt/ulpt_at_usb.c cvs rdiff -u -r1.1 -r1.2 \ src/sys/rump/dev/lib/libumass/sd_at_scsibus_at_umass.c cvs rdiff -u -r1.1 -r1.2 src/sys/rump/dev/lib/libwscons/component.c cvs rdiff -u -r1.36 -r1.37 src/sys/rump/include/rump/rumpuser.h cvs rdiff -u -r1.14 -r1.15 src/sys/rump/librump/rumpdev/rump_dev.c cvs rdiff -u -r1.9 -r1.10 src/sys/rump/librump/rumpdev/rump_dev_private.h cvs rdiff -u -r1.153 -r1.154 src/sys/rump/librump/rumpkern/rump.c cvs rdiff -u -r1.42 -r1.43 src/sys/rump/librump/rumpkern/rump_private.h cvs rdiff -u -r1.11 -r1.12 src/sys/rump/librump/rumpnet/rump_net.c cvs rdiff -u -r1.4 -r1.5 src/sys/rump/librump/rumpnet/rump_net_private.h cvs rdiff -u -r1.3 -r1.4 src/sys/rump/net/lib/Makefile.inc cvs rdiff -u -r1.1 -r1.2 src/sys/rump/net/lib/liblocal/component.c cvs rdiff -u -r1.2 -r1.3 src/sys/rump/net/lib/libnet/component.c cvs rdiff -u -r1.1 -r1.2 src/sys/rump/net/lib/libnetinet/component.c cvs rdiff -u -r1.1 -r1.2 src/sys/rump/net/lib/libsockin/component.c cvs rdiff -u -r1.1 -r1.2 src/sys/rump/net/lib/libvirtif/component.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/rump/ldscript.rump diff -u src/sys/rump/ldscript.rump:1.1 src/sys/rump/ldscript.rump:1.2 --- src/sys/rump/ldscript.rump:1.1 Sat Dec 12 17:10:19 2009 +++ src/sys/rump/ldscript.rump Mon Mar 1 13:12:19 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: ldscript.rump,v 1.1 2009/12/12 17:10:19 pooka Exp $ */ +/* $NetBSD: ldscript.rump,v 1.2 2010/03/01 13:12:19 pooka Exp $ */ /* * From binutils 2.19 onwards (in NetBSD) binutils ld PROVIDEs @@ -24,5 +24,12 @@ *(link_set_domains); __stop_link_set_domains = .; } + + link_set_rump_components : + { + __start_link_set_rump_components = .; + *(link_set_rump_components); + __stop_link_set_rump_components = .; + } } INSERT AFTER .data; Index: src/sys/rump/dev/lib/Makefile.inc diff -u src/sys/rump/dev/lib/Makefile.inc:1.2 src/sys/rump/dev/lib/Makefile.inc:1.3 --- src/sys/rump/dev/lib/Makefile.inc:1.2 Fri Sep 4 17:21:34 2009 +++ src/sys/rump/dev/lib/Makefile.inc Mon Mar 1 13:12:19 2010 @@ -1,7 +1,8 @@ -# $NetBSD: Makefile.inc,v 1.2 2009/09/04 17:21:34 pooka Exp $ +# $NetBSD: Makefile.inc,v 1.3 2010/03/01 13:12:19 pooka Exp $ # RUMPTOP= ${.CURDIR}/../../.. -CPPFLAGS+= -I${RUMPTOP}/librump/rumpdev -I${RUMPTOP}/librump/rumpdev/opt +CPPFLAGS+= -I${RUMPTOP}/librump/rumpkern -I${RUMPTOP}/librump/rumpdev \ + -I${RUMPTOP}/librump/rumpdev/opt .include "${RUMPTOP}/Makefile.rump" Index: src/sys/rump/dev/lib/libbpf/component.c diff -u src/sys/rump/dev/lib/libbpf/component.c:1.2 src/sys/rump/dev/lib/libbpf/component.c:1.3 --- src/sys/rump/dev/lib/libbpf/component.c:1.2 Tue Jan 26 17:50:02 2010 +++ src/sys/rump/dev/lib/libbpf/component.c Mon Mar 1 13:12:19 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.2 2010/01/26 17:50:02 pooka Exp $ */ +/* $NetBSD: component.c,v 1.3 2010/03/01 13:12:19 pooka Exp $ */ /* * Copyright (c) 2010 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.2 2010/01/26 17:50:02 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.3 2010/03/01 13:12:19 pooka Exp $"); #include <sys/param.h> #include <sys/conf.h> @@ -36,11 +36,10 @@ #include <net/bpf.h> -#include "rump_dev_private.h" +#include "rump_private.h" #include "rump_vfs_private.h" -void -rump_dev_bpf_init() +RUMP_COMPONENT(RUMP_COMPONENT_DEV) { extern const struct cdevsw bpf_cdevsw; devmajor_t bmaj, cmaj; Index: src/sys/rump/dev/lib/libcgd/component.c diff -u src/sys/rump/dev/lib/libcgd/component.c:1.5 src/sys/rump/dev/lib/libcgd/component.c:1.6 --- src/sys/rump/dev/lib/libcgd/component.c:1.5 Wed Jan 13 00:31:57 2010 +++ src/sys/rump/dev/lib/libcgd/component.c Mon Mar 1 13:12:19 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.5 2010/01/13 00:31:57 pooka Exp $ */ +/* $NetBSD: component.c,v 1.6 2010/03/01 13:12:19 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -26,18 +26,17 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.5 2010/01/13 00:31:57 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.6 2010/03/01 13:12:19 pooka Exp $"); #include <sys/param.h> #include <sys/conf.h> #include <sys/device.h> #include <sys/stat.h> -#include "rump_dev_private.h" +#include "rump_private.h" #include "rump_vfs_private.h" -void -rump_dev_cgd_init() +RUMP_COMPONENT(RUMP_COMPONENT_DEV) { extern const struct bdevsw cgd_bdevsw; extern const struct cdevsw cgd_cdevsw; Index: src/sys/rump/dev/lib/libdm/component.c diff -u src/sys/rump/dev/lib/libdm/component.c:1.1 src/sys/rump/dev/lib/libdm/component.c:1.2 --- src/sys/rump/dev/lib/libdm/component.c:1.1 Fri Dec 4 22:13:59 2009 +++ src/sys/rump/dev/lib/libdm/component.c Mon Mar 1 13:12:19 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.1 2009/12/04 22:13:59 haad Exp $ */ +/* $NetBSD: component.c,v 1.2 2010/03/01 13:12:19 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.1 2009/12/04 22:13:59 haad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.2 2010/03/01 13:12:19 pooka Exp $"); #include <sys/param.h> #include <sys/conf.h> @@ -36,14 +36,13 @@ #include <sys/vfs_syscalls.h> - +#include "rump_private.h" #include "rump_dev_private.h" #include "rump_vfs_private.h" void dmattach(int); -void -rump_dev_dm_init() +RUMP_COMPONENT(RUMP_COMPONENT_DEV) { extern const struct bdevsw dm_bdevsw; extern const struct cdevsw dm_cdevsw; Index: src/sys/rump/dev/lib/libnetsmb/component.c diff -u src/sys/rump/dev/lib/libnetsmb/component.c:1.3 src/sys/rump/dev/lib/libnetsmb/component.c:1.4 --- src/sys/rump/dev/lib/libnetsmb/component.c:1.3 Thu Dec 3 15:06:04 2009 +++ src/sys/rump/dev/lib/libnetsmb/component.c Mon Mar 1 13:12:19 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.3 2009/12/03 15:06:04 pooka Exp $ */ +/* $NetBSD: component.c,v 1.4 2010/03/01 13:12:19 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -28,20 +28,20 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.3 2009/12/03 15:06:04 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.4 2010/03/01 13:12:19 pooka Exp $"); #include <sys/param.h> #include <sys/conf.h> #include <sys/device.h> #include <sys/stat.h> +#include "rump_private.h" #include "rump_dev_private.h" #include "rump_vfs_private.h" void nsmbattach(int); /* XXX */ -void -rump_dev_netsmb_init() +RUMP_COMPONENT(RUMP_COMPONENT_DEV) { extern const struct cdevsw nsmb_cdevsw; devmajor_t bmaj, cmaj; Index: src/sys/rump/dev/lib/libraidframe/component.c diff -u src/sys/rump/dev/lib/libraidframe/component.c:1.4 src/sys/rump/dev/lib/libraidframe/component.c:1.5 --- src/sys/rump/dev/lib/libraidframe/component.c:1.4 Thu Dec 3 15:06:04 2009 +++ src/sys/rump/dev/lib/libraidframe/component.c Mon Mar 1 13:12:19 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.4 2009/12/03 15:06:04 pooka Exp $ */ +/* $NetBSD: component.c,v 1.5 2010/03/01 13:12:19 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -26,13 +26,14 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.4 2009/12/03 15:06:04 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.5 2010/03/01 13:12:19 pooka Exp $"); #include <sys/param.h> #include <sys/conf.h> #include <sys/device.h> #include <sys/stat.h> +#include "rump_private.h" #include "rump_dev_private.h" #include "rump_vfs_private.h" @@ -40,8 +41,7 @@ void raidattach(int); -void -rump_dev_raidframe_init() +RUMP_COMPONENT(RUMP_COMPONENT_DEV) { extern const struct bdevsw raid_bdevsw; extern const struct cdevsw raid_cdevsw; Index: src/sys/rump/dev/lib/librnd/component.c diff -u src/sys/rump/dev/lib/librnd/component.c:1.2 src/sys/rump/dev/lib/librnd/component.c:1.3 --- src/sys/rump/dev/lib/librnd/component.c:1.2 Thu Dec 3 15:06:04 2009 +++ src/sys/rump/dev/lib/librnd/component.c Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.2 2009/12/03 15:06:04 pooka Exp $ */ +/* $NetBSD: component.c,v 1.3 2010/03/01 13:12:20 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.2 2009/12/03 15:06:04 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.3 2010/03/01 13:12:20 pooka Exp $"); #include <sys/param.h> #include <sys/conf.h> @@ -34,13 +34,13 @@ #include <sys/rnd.h> #include <sys/stat.h> +#include "rump_private.h" #include "rump_dev_private.h" #include "rump_vfs_private.h" void rndattach(int); -void -rump_dev_rnd_init() +RUMP_COMPONENT(RUMP_COMPONENT_DEV) { extern const struct cdevsw rnd_cdevsw; devmajor_t bmaj, cmaj; Index: src/sys/rump/dev/lib/libsysmon/component.c diff -u src/sys/rump/dev/lib/libsysmon/component.c:1.1 src/sys/rump/dev/lib/libsysmon/component.c:1.2 --- src/sys/rump/dev/lib/libsysmon/component.c:1.1 Sun Jan 31 03:06:59 2010 +++ src/sys/rump/dev/lib/libsysmon/component.c Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.1 2010/01/31 03:06:59 pooka Exp $ */ +/* $NetBSD: component.c,v 1.2 2010/03/01 13:12:20 pooka Exp $ */ /* * Copyright (c) 2010 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.1 2010/01/31 03:06:59 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.2 2010/03/01 13:12:20 pooka Exp $"); #include <sys/param.h> #include <sys/conf.h> @@ -36,13 +36,13 @@ #include <dev/sysmon/sysmon_taskq.h> #include <dev/sysmon/sysmonvar.h> +#include "rump_private.h" #include "rump_dev_private.h" #include "rump_vfs_private.h" void swwdogattach(int); -void -rump_dev_sysmon_init() +RUMP_COMPONENT(RUMP_COMPONENT_DEV) { extern const struct cdevsw sysmon_cdevsw; devmajor_t bmaj, cmaj; Index: src/sys/rump/dev/lib/libucom/ucom_at_usb.c diff -u src/sys/rump/dev/lib/libucom/ucom_at_usb.c:1.2 src/sys/rump/dev/lib/libucom/ucom_at_usb.c:1.3 --- src/sys/rump/dev/lib/libucom/ucom_at_usb.c:1.2 Mon Mar 1 11:34:27 2010 +++ src/sys/rump/dev/lib/libucom/ucom_at_usb.c Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: ucom_at_usb.c,v 1.2 2010/03/01 11:34:27 pooka Exp $ */ +/* $NetBSD: ucom_at_usb.c,v 1.3 2010/03/01 13:12:20 pooka Exp $ */ #include <sys/param.h> #include <sys/types.h> @@ -9,6 +9,7 @@ #include "ioconf.c" +#include "rump_private.h" #include "rump_dev_private.h" #include "rump_vfs_private.h" @@ -21,8 +22,7 @@ void tty_init(void); -void -rump_device_configuration(void) +RUMP_COMPONENT(RUMP_COMPONENT_DEV) { extern struct cdevsw ucom_cdevsw; devmajor_t cmaj, bmaj; Index: src/sys/rump/dev/lib/libulpt/ulpt_at_usb.c diff -u src/sys/rump/dev/lib/libulpt/ulpt_at_usb.c:1.1 src/sys/rump/dev/lib/libulpt/ulpt_at_usb.c:1.2 --- src/sys/rump/dev/lib/libulpt/ulpt_at_usb.c:1.1 Thu Feb 11 02:22:09 2010 +++ src/sys/rump/dev/lib/libulpt/ulpt_at_usb.c Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: ulpt_at_usb.c,v 1.1 2010/02/11 02:22:09 pooka Exp $ */ +/* $NetBSD: ulpt_at_usb.c,v 1.2 2010/03/01 13:12:20 pooka Exp $ */ /* * MACHINE GENERATED: DO NOT EDIT @@ -381,6 +381,7 @@ { NULL, NULL, 0, 0, NULL, 0, NULL } }; +#include "rump_private.h" #include "rump_dev_private.h" #include "rump_vfs_private.h" @@ -391,8 +392,7 @@ panic("\"%s\" failed", #call); \ } while (/*CONSTCOND*/0) -void -rump_device_configuration(void) +RUMP_COMPONENT(RUMP_COMPONENT_DEV) { extern struct cfattach usb_ca, uhub_ca, uroothub_ca, ulpt_ca; extern struct cdevsw ulpt_cdevsw; Index: src/sys/rump/dev/lib/libumass/sd_at_scsibus_at_umass.c diff -u src/sys/rump/dev/lib/libumass/sd_at_scsibus_at_umass.c:1.1 src/sys/rump/dev/lib/libumass/sd_at_scsibus_at_umass.c:1.2 --- src/sys/rump/dev/lib/libumass/sd_at_scsibus_at_umass.c:1.1 Thu Feb 11 02:22:09 2010 +++ src/sys/rump/dev/lib/libumass/sd_at_scsibus_at_umass.c Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: sd_at_scsibus_at_umass.c,v 1.1 2010/02/11 02:22:09 pooka Exp $ */ +/* $NetBSD: sd_at_scsibus_at_umass.c,v 1.2 2010/03/01 13:12:20 pooka Exp $ */ #include <sys/param.h> #include <sys/conf.h> @@ -8,6 +8,7 @@ #include "ioconf.c" +#include "rump_private.h" #include "rump_dev_private.h" #include "rump_vfs_private.h" @@ -18,8 +19,7 @@ panic("\"%s\" failed", #call); \ } while (/*CONSTCOND*/0) -void -rump_device_configuration(void) +RUMP_COMPONENT(RUMP_COMPONENT_DEV) { extern struct cfattach ugenhc_ca; extern struct cfattach usb_ca, uhub_ca, uroothub_ca, umass_ca; Index: src/sys/rump/dev/lib/libwscons/component.c diff -u src/sys/rump/dev/lib/libwscons/component.c:1.1 src/sys/rump/dev/lib/libwscons/component.c:1.2 --- src/sys/rump/dev/lib/libwscons/component.c:1.1 Thu Feb 11 02:22:10 2010 +++ src/sys/rump/dev/lib/libwscons/component.c Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.1 2010/02/11 02:22:10 pooka Exp $ */ +/* $NetBSD: component.c,v 1.2 2010/03/01 13:12:20 pooka Exp $ */ /* * MACHINE GENERATED: DO NOT EDIT @@ -421,6 +421,7 @@ #include <sys/stat.h> +#include "rump_private.h" #include "rump_dev_private.h" #include "rump_vfs_private.h" @@ -431,8 +432,7 @@ panic("\"%s\" failed", #call); \ } while (/*CONSTCOND*/0) -void -rump_wscons_configuration(void) +RUMP_COMPONENT(RUMP_COMPONENT_DEV) { extern struct cfattach wskbd_ca, wsmouse_ca; extern struct cdevsw wskbd_cdevsw, wsmouse_cdevsw; Index: src/sys/rump/include/rump/rumpuser.h diff -u src/sys/rump/include/rump/rumpuser.h:1.36 src/sys/rump/include/rump/rumpuser.h:1.37 --- src/sys/rump/include/rump/rumpuser.h:1.36 Fri Feb 26 15:23:20 2010 +++ src/sys/rump/include/rump/rumpuser.h Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpuser.h,v 1.36 2010/02/26 15:23:20 pooka Exp $ */ +/* $NetBSD: rumpuser.h,v 1.37 2010/03/01 13:12:20 pooka Exp $ */ /* * Copyright (c) 2007 Antti Kantee. All Rights Reserved. @@ -198,8 +198,11 @@ #endif struct modinfo; +struct rump_component; typedef int (*rump_modinit_fn)(struct modinfo *, prop_dictionary_t); typedef int (*rump_symload_fn)(void *, uint64_t, char *, uint64_t); +typedef void (*rump_component_init_fn)(struct rump_component *, int); void rumpuser_dl_bootstrap(rump_modinit_fn, rump_symload_fn); +void rumpuser_dl_component_init(int, rump_component_init_fn); #endif /* _RUMP_RUMPUSER_H_ */ Index: src/sys/rump/librump/rumpdev/rump_dev.c diff -u src/sys/rump/librump/rumpdev/rump_dev.c:1.14 src/sys/rump/librump/rumpdev/rump_dev.c:1.15 --- src/sys/rump/librump/rumpdev/rump_dev.c:1.14 Wed Feb 3 21:35:22 2010 +++ src/sys/rump/librump/rumpdev/rump_dev.c Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: rump_dev.c,v 1.14 2010/02/03 21:35:22 pooka Exp $ */ +/* $NetBSD: rump_dev.c,v 1.15 2010/03/01 13:12:20 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -26,25 +26,17 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rump_dev.c,v 1.14 2010/02/03 21:35:22 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rump_dev.c,v 1.15 2010/03/01 13:12:20 pooka Exp $"); #include <sys/param.h> #include <sys/device.h> +#include "rump_private.h" #include "rump_dev_private.h" void nocomponent(void); void nocomponent() {} -__weak_alias(rump_dev_bpf_init,nocomponent); -__weak_alias(rump_dev_cgd_init,nocomponent); -__weak_alias(rump_dev_dm_init,nocomponent); -__weak_alias(rump_dev_raidframe_init,nocomponent); -__weak_alias(rump_dev_netsmb_init,nocomponent); -__weak_alias(rump_dev_rnd_init,nocomponent); -__weak_alias(rump_dev_sysmon_init,nocomponent); - -__weak_alias(rump_device_configuration,nocomponent); -__weak_alias(rump_wscons_configuration,nocomponent); +__weak_alias(rump_device_components,nocomponent); const char *rootspec = "rump0a"; /* usually comes from config */ @@ -59,21 +51,13 @@ config_init_mi(); - rump_dev_bpf_init(); - rump_dev_cgd_init(); - rump_dev_dm_init(); - rump_dev_raidframe_init(); - rump_dev_netsmb_init(); - rump_dev_rnd_init(); - rump_dev_sysmon_init(); + rump_component_init(RUMP_COMPONENT_DEV); + rump_device_components(); rump_pdev_finalize(); - rump_device_configuration(); - rump_wscons_configuration(); - cold = 0; - if (rump_device_configuration != nocomponent) { + if (rump_component_count(RUMP_COMPONENT_DEV) > 0) { 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.9 src/sys/rump/librump/rumpdev/rump_dev_private.h:1.10 --- src/sys/rump/librump/rumpdev/rump_dev_private.h:1.9 Sun Jan 31 03:07:00 2010 +++ src/sys/rump/librump/rumpdev/rump_dev_private.h Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: rump_dev_private.h,v 1.9 2010/01/31 03:07:00 pooka Exp $ */ +/* $NetBSD: rump_dev_private.h,v 1.10 2010/03/01 13:12:20 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -30,21 +30,11 @@ void rump_dev_init(void); +void rump_device_components(void); + void rump_pdev_add(void (*fn)(int), int); void rump_pdev_finalize(void); -void rump_dev_bpf_init(void); -void rump_dev_cgd_init(void); -void rump_dev_dm_init(void); -void rump_dev_raidframe_init(void); -void rump_dev_netsmb_init(void); -void rump_dev_rnd_init(void); -void rump_dev_rumpusbhc_init(void); -void rump_dev_sysmon_init(void); - -void rump_device_configuration(void); -void rump_wscons_configuration(void); - struct mainbus_attach_args { int maa_unit; }; Index: src/sys/rump/librump/rumpkern/rump.c diff -u src/sys/rump/librump/rumpkern/rump.c:1.153 src/sys/rump/librump/rumpkern/rump.c:1.154 --- src/sys/rump/librump/rumpkern/rump.c:1.153 Fri Feb 26 15:23:20 2010 +++ src/sys/rump/librump/rumpkern/rump.c Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: rump.c,v 1.153 2010/02/26 15:23:20 pooka Exp $ */ +/* $NetBSD: rump.c,v 1.154 2010/03/01 13:12:20 pooka Exp $ */ /* * Copyright (c) 2007 Antti Kantee. All Rights Reserved. @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.153 2010/02/26 15:23:20 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.154 2010/03/01 13:12:20 pooka Exp $"); #include <sys/param.h> #include <sys/atomic.h> @@ -584,6 +584,34 @@ return retid; } +static int compcounter[RUMP_COMPONENT_MAX]; + +static void +rump_component_init_cb(struct rump_component *rc, int type) +{ + + KASSERT(type < RUMP_COMPONENT_MAX); + if (rc->rc_type == type) { + rc->rc_init(); + compcounter[type]++; + } +} + +int +rump_component_count(enum rump_component_type type) +{ + + KASSERT(type <= RUMP_COMPONENT_MAX); + return compcounter[type]; +} + +void +rump_component_init(enum rump_component_type type) +{ + + rumpuser_dl_component_init(type, rump_component_init_cb); +} + #define ERROUT(err) do { rv = err; goto out; } while (/*CONSTCOND*/0) int rump_module_init(struct modinfo *mi, prop_dictionary_t props) Index: src/sys/rump/librump/rumpkern/rump_private.h diff -u src/sys/rump/librump/rumpkern/rump_private.h:1.42 src/sys/rump/librump/rumpkern/rump_private.h:1.43 --- src/sys/rump/librump/rumpkern/rump_private.h:1.42 Sat Dec 5 13:01:31 2009 +++ src/sys/rump/librump/rumpkern/rump_private.h Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: rump_private.h,v 1.42 2009/12/05 13:01:31 pooka Exp $ */ +/* $NetBSD: rump_private.h,v 1.43 2010/03/01 13:12:20 pooka Exp $ */ /* * Copyright (c) 2007 Antti Kantee. All Rights Reserved. @@ -59,6 +59,28 @@ extern struct sysent rump_sysent[]; +enum rump_component_type { + RUMP_COMPONENT_DEV, + RUMP_COMPONENT_NET, RUMP_COMPONENT_NET_ROUTE, RUMP_COMPONENT_NET_IF, + RUMP_COMPONENT_VFS, + RUMP_COMPONENT_MAX, +}; +struct rump_component { + enum rump_component_type rc_type; + void (*rc_init)(void); +}; +#define RUMP_COMPONENT(type) \ +static void rumpcompinit(void); \ +static const struct rump_component rumpcomp = { \ + .rc_type = type, \ + .rc_init = rumpcompinit, \ +}; \ +__link_set_add_rodata(rump_components, rumpcomp); \ +static void rumpcompinit(void) + +void rump_component_init(enum rump_component_type); +int rump_component_count(enum rump_component_type); + void rumpvm_init(void); struct vm_page *rumpvm_makepage(struct uvm_object *, voff_t); Index: src/sys/rump/librump/rumpnet/rump_net.c diff -u src/sys/rump/librump/rumpnet/rump_net.c:1.11 src/sys/rump/librump/rumpnet/rump_net.c:1.12 --- src/sys/rump/librump/rumpnet/rump_net.c:1.11 Tue Jan 19 22:08:18 2010 +++ src/sys/rump/librump/rumpnet/rump_net.c Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: rump_net.c,v 1.11 2010/01/19 22:08:18 pooka Exp $ */ +/* $NetBSD: rump_net.c,v 1.12 2010/03/01 13:12:20 pooka Exp $ */ /* * Copyright (c) 2008 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rump_net.c,v 1.11 2010/01/19 22:08:18 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rump_net.c,v 1.12 2010/03/01 13:12:20 pooka Exp $"); #include <sys/param.h> @@ -38,15 +38,12 @@ #include <net/radix.h> #include <net/route.h> +#include "rump_private.h" #include "rump_net_private.h" void nocomponent(void); void nocomponent() {} -__weak_alias(rump_net_net_init,nocomponent); -__weak_alias(rump_net_inet_init,nocomponent); -__weak_alias(rump_net_local_init,nocomponent); -__weak_alias(rump_net_sockin_init,nocomponent); -__weak_alias(rump_net_virtif_init,nocomponent); +__weak_alias(rump_net_components,nocomponent); void rump_net_init(void) @@ -58,17 +55,11 @@ soinit(); domaininit(false); - /* - * Add rest of the domains we failed to add in domaininit() - * due to linkset lossage. - */ - rump_net_inet_init(); - rump_net_local_init(); - rump_net_sockin_init(); - /* Note: should be last _domain_ due to calling of rn_init() */ - rump_net_net_init(); - rump_net_virtif_init(); + rump_component_init(RUMP_COMPONENT_NET); + rump_component_init(RUMP_COMPONENT_NET_ROUTE); + rump_component_init(RUMP_COMPONENT_NET_IF); + rump_net_components(); rump_netisr_init(); } Index: src/sys/rump/librump/rumpnet/rump_net_private.h diff -u src/sys/rump/librump/rumpnet/rump_net_private.h:1.4 src/sys/rump/librump/rumpnet/rump_net_private.h:1.5 --- src/sys/rump/librump/rumpnet/rump_net_private.h:1.4 Wed Oct 14 17:29:20 2009 +++ src/sys/rump/librump/rumpnet/rump_net_private.h Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: rump_net_private.h,v 1.4 2009/10/14 17:29:20 pooka Exp $ */ +/* $NetBSD: rump_net_private.h,v 1.5 2010/03/01 13:12:20 pooka Exp $ */ /* * Copyright (c) 2008 Antti Kantee. All Rights Reserved. @@ -38,11 +38,7 @@ } \ } while (/*CONSTCOND*/0) -void rump_net_net_init(void); -void rump_net_inet_init(void); -void rump_net_local_init(void); -void rump_net_sockin_init(void); -void rump_net_virtif_init(void); +void rump_net_components(void); void rump_dummyif_create(void); Index: src/sys/rump/net/lib/Makefile.inc diff -u src/sys/rump/net/lib/Makefile.inc:1.3 src/sys/rump/net/lib/Makefile.inc:1.4 --- src/sys/rump/net/lib/Makefile.inc:1.3 Wed May 27 23:41:20 2009 +++ src/sys/rump/net/lib/Makefile.inc Mon Mar 1 13:12:20 2010 @@ -1,7 +1,8 @@ -# $NetBSD: Makefile.inc,v 1.3 2009/05/27 23:41:20 pooka Exp $ +# $NetBSD: Makefile.inc,v 1.4 2010/03/01 13:12:20 pooka Exp $ # RUMPTOP= ${.CURDIR}/../../.. -CPPFLAGS+= -I${RUMPTOP}/librump/rumpnet -I${RUMPTOP}/librump/rumpnet/opt +CPPFLAGS+= -I${RUMPTOP}/librump/rumpkern -I${RUMPTOP}/librump/rumpnet \ + -I${RUMPTOP}/librump/rumpnet/opt .include "${RUMPTOP}/Makefile.rump" Index: src/sys/rump/net/lib/liblocal/component.c diff -u src/sys/rump/net/lib/liblocal/component.c:1.1 src/sys/rump/net/lib/liblocal/component.c:1.2 --- src/sys/rump/net/lib/liblocal/component.c:1.1 Thu May 28 00:02:16 2009 +++ src/sys/rump/net/lib/liblocal/component.c Mon Mar 1 13:12:20 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.1 2009/05/28 00:02:16 pooka Exp $ */ +/* $NetBSD: component.c,v 1.2 2010/03/01 13:12:20 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -28,18 +28,16 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.1 2009/05/28 00:02:16 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.2 2010/03/01 13:12:20 pooka Exp $"); #include <sys/param.h> #include <sys/domain.h> #include <sys/protosw.h> -#include <net/route.h> - +#include "rump_private.h" #include "rump_net_private.h" -void -rump_net_local_init() +RUMP_COMPONENT(RUMP_COMPONENT_NET) { extern struct domain unixdomain; Index: src/sys/rump/net/lib/libnet/component.c diff -u src/sys/rump/net/lib/libnet/component.c:1.2 src/sys/rump/net/lib/libnet/component.c:1.3 --- src/sys/rump/net/lib/libnet/component.c:1.2 Wed Sep 16 15:08:53 2009 +++ src/sys/rump/net/lib/libnet/component.c Mon Mar 1 13:12:21 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.2 2009/09/16 15:08:53 pooka Exp $ */ +/* $NetBSD: component.c,v 1.3 2010/03/01 13:12:21 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.2 2009/09/16 15:08:53 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.3 2010/03/01 13:12:21 pooka Exp $"); #include <sys/param.h> #include <sys/domain.h> @@ -37,10 +37,10 @@ #include <net/if.h> #include <net/route.h> +#include "rump_private.h" #include "rump_net_private.h" -void -rump_net_net_init() +RUMP_COMPONENT(RUMP_COMPONENT_NET_ROUTE) { extern struct domain routedomain; Index: src/sys/rump/net/lib/libnetinet/component.c diff -u src/sys/rump/net/lib/libnetinet/component.c:1.1 src/sys/rump/net/lib/libnetinet/component.c:1.2 --- src/sys/rump/net/lib/libnetinet/component.c:1.1 Thu May 28 00:02:16 2009 +++ src/sys/rump/net/lib/libnetinet/component.c Mon Mar 1 13:12:21 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.1 2009/05/28 00:02:16 pooka Exp $ */ +/* $NetBSD: component.c,v 1.2 2010/03/01 13:12:21 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -28,18 +28,16 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.1 2009/05/28 00:02:16 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.2 2010/03/01 13:12:21 pooka Exp $"); #include <sys/param.h> #include <sys/domain.h> #include <sys/protosw.h> -#include <net/route.h> - +#include "rump_private.h" #include "rump_net_private.h" -void -rump_net_inet_init() +RUMP_COMPONENT(RUMP_COMPONENT_NET) { extern struct domain arpdomain, inetdomain, inet6domain; Index: src/sys/rump/net/lib/libsockin/component.c diff -u src/sys/rump/net/lib/libsockin/component.c:1.1 src/sys/rump/net/lib/libsockin/component.c:1.2 --- src/sys/rump/net/lib/libsockin/component.c:1.1 Thu May 28 00:02:16 2009 +++ src/sys/rump/net/lib/libsockin/component.c Mon Mar 1 13:12:21 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.1 2009/05/28 00:02:16 pooka Exp $ */ +/* $NetBSD: component.c,v 1.2 2010/03/01 13:12:21 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -28,18 +28,16 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.1 2009/05/28 00:02:16 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.2 2010/03/01 13:12:21 pooka Exp $"); #include <sys/param.h> #include <sys/domain.h> #include <sys/protosw.h> -#include <net/route.h> - +#include "rump_private.h" #include "rump_net_private.h" -void -rump_net_sockin_init() +RUMP_COMPONENT(RUMP_COMPONENT_NET) { extern struct domain sockindomain; Index: src/sys/rump/net/lib/libvirtif/component.c diff -u src/sys/rump/net/lib/libvirtif/component.c:1.1 src/sys/rump/net/lib/libvirtif/component.c:1.2 --- src/sys/rump/net/lib/libvirtif/component.c:1.1 Thu May 28 00:02:17 2009 +++ src/sys/rump/net/lib/libvirtif/component.c Mon Mar 1 13:12:21 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.1 2009/05/28 00:02:17 pooka Exp $ */ +/* $NetBSD: component.c,v 1.2 2010/03/01 13:12:21 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -28,18 +28,16 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.1 2009/05/28 00:02:17 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.2 2010/03/01 13:12:21 pooka Exp $"); #include <sys/param.h> #include <sys/domain.h> #include <sys/protosw.h> -#include <net/route.h> - +#include "rump_private.h" #include "rump_net_private.h" -void -rump_net_virtif_init() +RUMP_COMPONENT(RUMP_COMPONENT_NET_IF) { rump_dummyif_create();