Module Name: src
Committed By: pooka
Date: Thu Dec 3 12:35:35 UTC 2009
Modified Files:
src/sys/rump/librump/rumpkern: emul.c rump.c rump_private.h
src/sys/rump/librump/rumpvfs: rump_vfs.c rump_vfs_private.h rumpfs.c
Log Message:
Decide it's not worth the fuss to have rumpfs as a module and just
hardcode attach into rump_vfs_init(). Saves us from a lot of
pingpong init bouncing from one component to another to get the order
right.
To generate a diff of this commit:
cvs rdiff -u -r1.111 -r1.112 src/sys/rump/librump/rumpkern/emul.c
cvs rdiff -u -r1.143 -r1.144 src/sys/rump/librump/rumpkern/rump.c
cvs rdiff -u -r1.38 -r1.39 src/sys/rump/librump/rumpkern/rump_private.h
cvs rdiff -u -r1.38 -r1.39 src/sys/rump/librump/rumpvfs/rump_vfs.c
cvs rdiff -u -r1.8 -r1.9 src/sys/rump/librump/rumpvfs/rump_vfs_private.h
cvs rdiff -u -r1.34 -r1.35 src/sys/rump/librump/rumpvfs/rumpfs.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/librump/rumpkern/emul.c
diff -u src/sys/rump/librump/rumpkern/emul.c:1.111 src/sys/rump/librump/rumpkern/emul.c:1.112
--- src/sys/rump/librump/rumpkern/emul.c:1.111 Tue Dec 1 09:52:29 2009
+++ src/sys/rump/librump/rumpkern/emul.c Thu Dec 3 12:35:34 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: emul.c,v 1.111 2009/12/01 09:52:29 pooka Exp $ */
+/* $NetBSD: emul.c,v 1.112 2009/12/03 12:35:34 pooka Exp $ */
/*
* Copyright (c) 2007 Antti Kantee. All Rights Reserved.
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: emul.c,v 1.111 2009/12/01 09:52:29 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: emul.c,v 1.112 2009/12/03 12:35:34 pooka Exp $");
#include <sys/param.h>
#include <sys/null.h>
@@ -123,10 +123,7 @@
device_class(device_t dev)
{
- if (dev != RUMP_VFSROOTDEV)
- panic("%s: dev != root_device not supported", __func__);
-
- return DV_VIRTUAL;
+ return dev->dv_class;
}
void
Index: src/sys/rump/librump/rumpkern/rump.c
diff -u src/sys/rump/librump/rumpkern/rump.c:1.143 src/sys/rump/librump/rumpkern/rump.c:1.144
--- src/sys/rump/librump/rumpkern/rump.c:1.143 Tue Dec 1 09:50:51 2009
+++ src/sys/rump/librump/rumpkern/rump.c Thu Dec 3 12:35:34 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: rump.c,v 1.143 2009/12/01 09:50:51 pooka Exp $ */
+/* $NetBSD: rump.c,v 1.144 2009/12/03 12:35:34 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.143 2009/12/01 09:50:51 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.144 2009/12/03 12:35:34 pooka Exp $");
#include <sys/param.h>
#include <sys/atomic.h>
@@ -36,6 +36,7 @@
#include <sys/callout.h>
#include <sys/conf.h>
#include <sys/cpu.h>
+#include <sys/device.h>
#include <sys/evcnt.h>
#include <sys/event.h>
#include <sys/exec_elf.h>
@@ -102,6 +103,10 @@
sigset_t sigcantmask;
+struct device rump_rootdev = {
+ .dv_class = DV_VIRTUAL
+};
+
#ifdef RUMP_WITHOUT_THREADS
int rump_threads = 0;
#else
@@ -124,7 +129,6 @@
int rump__unavailable() {return EOPNOTSUPP;}
__weak_alias(rump_net_init,rump__unavailable);
__weak_alias(rump_vfs_init,rump__unavailable);
-__weak_alias(rump_vfs_init2,rump__unavailable);
__weak_alias(rump_dev_init,rump__unavailable);
__weak_alias(rump_vfs_fini,rump__unavailable);
@@ -308,9 +312,6 @@
rumpuser_dl_module_bootstrap(rump_module_init, rump_kernelfsym_load);
- /* mount rootfs, etcetc. */
- rump_vfs_init2();
-
rumpuser_gethostname(hostname, MAXHOSTNAMELEN, &error);
hostnamelen = strlen(hostname);
Index: src/sys/rump/librump/rumpkern/rump_private.h
diff -u src/sys/rump/librump/rumpkern/rump_private.h:1.38 src/sys/rump/librump/rumpkern/rump_private.h:1.39
--- src/sys/rump/librump/rumpkern/rump_private.h:1.38 Wed Dec 2 08:31:56 2009
+++ src/sys/rump/librump/rumpkern/rump_private.h Thu Dec 3 12:35:34 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: rump_private.h,v 1.38 2009/12/02 08:31:56 uebayasi Exp $ */
+/* $NetBSD: rump_private.h,v 1.39 2009/12/03 12:35:34 pooka Exp $ */
/*
* Copyright (c) 2007 Antti Kantee. All Rights Reserved.
@@ -32,6 +32,7 @@
#include <sys/param.h>
#include <sys/cpu.h>
+#include <sys/device.h>
#include <sys/lwp.h>
#include <sys/proc.h>
#include <sys/systm.h>
@@ -54,9 +55,9 @@
#define UIO_VMSPACE_SYS (&rump_vmspace)
#define RUMP_LMUTEX_MAGIC ((kmutex_t *)0x101)
-#define RUMP_VFSROOTDEV ((struct device *)-11)
extern int rump_threads;
+extern struct device rump_rootdev;
extern struct sysent rump_sysent[];
Index: src/sys/rump/librump/rumpvfs/rump_vfs.c
diff -u src/sys/rump/librump/rumpvfs/rump_vfs.c:1.38 src/sys/rump/librump/rumpvfs/rump_vfs.c:1.39
--- src/sys/rump/librump/rumpvfs/rump_vfs.c:1.38 Tue Dec 1 09:56:59 2009
+++ src/sys/rump/librump/rumpvfs/rump_vfs.c Thu Dec 3 12:35:35 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: rump_vfs.c,v 1.38 2009/12/01 09:56:59 pooka Exp $ */
+/* $NetBSD: rump_vfs.c,v 1.39 2009/12/03 12:35:35 pooka Exp $ */
/*
* Copyright (c) 2008 Antti Kantee. All Rights Reserved.
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rump_vfs.c,v 1.38 2009/12/01 09:56:59 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rump_vfs.c,v 1.39 2009/12/03 12:35:35 pooka Exp $");
#include <sys/param.h>
#include <sys/buf.h>
@@ -75,6 +75,7 @@
void
rump_vfs_init(void)
{
+ extern struct vfsops rumpfs_vfsops;
char buf[64];
int error;
int rv, i;
@@ -105,30 +106,16 @@
rumpuser_biothread, rump_biodone, NULL, "rmpabio")) != 0)
panic("syncer thread create failed: %d", rv);
}
-}
-
-void
-rump_vfs_init2()
-{
- extern struct vfsops rumpfs_vfsops;
- int rv;
rootfstype = ROOT_FSTYPE_ANY;
- root_device = RUMP_VFSROOTDEV;
+ root_device = &rump_rootdev;
/* bootstrap cwdi (rest done in vfs_mountroot() */
rw_init(&cwdi0.cwdi_lock);
proc0.p_cwdi = &cwdi0;
proc0.p_cwdi = cwdinit();
- /*
- * XXX: make sure rumpfs is attached. The opposite can
- * happen e.g. on Linux where the dynlinker doesn't work
- * like we would want it to.
- */
- if (!vfs_getopsbyname(MOUNT_RUMPFS))
- vfs_attach(&rumpfs_vfsops);
-
+ vfs_attach(&rumpfs_vfsops);
vfs_mountroot();
rump_proc_vfs_init = pvfs_init;
Index: src/sys/rump/librump/rumpvfs/rump_vfs_private.h
diff -u src/sys/rump/librump/rumpvfs/rump_vfs_private.h:1.8 src/sys/rump/librump/rumpvfs/rump_vfs_private.h:1.9
--- src/sys/rump/librump/rumpvfs/rump_vfs_private.h:1.8 Thu Nov 26 20:58:51 2009
+++ src/sys/rump/librump/rumpvfs/rump_vfs_private.h Thu Dec 3 12:35:35 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: rump_vfs_private.h,v 1.8 2009/11/26 20:58:51 pooka Exp $ */
+/* $NetBSD: rump_vfs_private.h,v 1.9 2009/12/03 12:35:35 pooka Exp $ */
/*
* Copyright (c) 2008 Antti Kantee. All Rights Reserved.
@@ -31,7 +31,6 @@
#include <sys/types.h>
void rump_vfs_init(void);
-void rump_vfs_init2(void);
void rump_vfs_fini(void);
void rumpfs_init(void);
Index: src/sys/rump/librump/rumpvfs/rumpfs.c
diff -u src/sys/rump/librump/rumpvfs/rumpfs.c:1.34 src/sys/rump/librump/rumpvfs/rumpfs.c:1.35
--- src/sys/rump/librump/rumpvfs/rumpfs.c:1.34 Mon Nov 30 12:32:13 2009
+++ src/sys/rump/librump/rumpvfs/rumpfs.c Thu Dec 3 12:35:35 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: rumpfs.c,v 1.34 2009/11/30 12:32:13 pooka Exp $ */
+/* $NetBSD: rumpfs.c,v 1.35 2009/12/03 12:35:35 pooka Exp $ */
/*
* Copyright (c) 2009 Antti Kantee. All Rights Reserved.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rumpfs.c,v 1.34 2009/11/30 12:32:13 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rumpfs.c,v 1.35 2009/12/03 12:35:35 pooka Exp $");
#include <sys/param.h>
#include <sys/atomic.h>
@@ -900,19 +900,3 @@
return 0;
}
-
-MODULE(MODULE_CLASS_VFS, rumpfs, NULL);
-
-static int
-rumpfs_modcmd(modcmd_t cmd, void *arg)
-{
-
- switch (cmd) {
- case MODULE_CMD_INIT:
- return vfs_attach(&rumpfs_vfsops);
- case MODULE_CMD_FINI:
- return vfs_detach(&rumpfs_vfsops);
- default:
- return ENOTTY;
- }
-}