Module Name: src
Committed By: pooka
Date: Mon Jan 14 16:45:47 UTC 2013
Modified Files:
src/sys/rump/librump/rumpdev: rump_dev.c
src/sys/rump/librump/rumpkern: rump.c rump_private.h vm.c
src/sys/rump/librump/rumpnet: rump_net.c rump_net_private.h
src/sys/rump/librump/rumpvfs: rump_vfs.c rump_vfs_private.h
Log Message:
Don't use __weak_alias where the component framework is sufficient.
To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/rump/librump/rumpdev/rump_dev.c
cvs rdiff -u -r1.248 -r1.249 src/sys/rump/librump/rumpkern/rump.c
cvs rdiff -u -r1.71 -r1.72 src/sys/rump/librump/rumpkern/rump_private.h
cvs rdiff -u -r1.131 -r1.132 src/sys/rump/librump/rumpkern/vm.c
cvs rdiff -u -r1.13 -r1.14 src/sys/rump/librump/rumpnet/rump_net.c
cvs rdiff -u -r1.5 -r1.6 src/sys/rump/librump/rumpnet/rump_net_private.h
cvs rdiff -u -r1.70 -r1.71 src/sys/rump/librump/rumpvfs/rump_vfs.c
cvs rdiff -u -r1.15 -r1.16 src/sys/rump/librump/rumpvfs/rump_vfs_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/rump_dev.c
diff -u src/sys/rump/librump/rumpdev/rump_dev.c:1.20 src/sys/rump/librump/rumpdev/rump_dev.c:1.21
--- src/sys/rump/librump/rumpdev/rump_dev.c:1.20 Sat Oct 27 17:18:40 2012
+++ src/sys/rump/librump/rumpdev/rump_dev.c Mon Jan 14 16:45:47 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: rump_dev.c,v 1.20 2012/10/27 17:18:40 chs Exp $ */
+/* $NetBSD: rump_dev.c,v 1.21 2013/01/14 16:45:47 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.20 2012/10/27 17:18:40 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rump_dev.c,v 1.21 2013/01/14 16:45:47 pooka Exp $");
#include <sys/param.h>
#include <sys/device.h>
@@ -41,8 +41,7 @@ __weak_alias(buf_syncwait,nocomponent);
const char *rootspec = "rump0a"; /* usually comes from config */
-void
-rump_dev_init(void)
+RUMP_COMPONENT(RUMP__FACTION_DEV)
{
extern int cold;
Index: src/sys/rump/librump/rumpkern/rump.c
diff -u src/sys/rump/librump/rumpkern/rump.c:1.248 src/sys/rump/librump/rumpkern/rump.c:1.249
--- src/sys/rump/librump/rumpkern/rump.c:1.248 Mon Jan 14 16:35:06 2013
+++ src/sys/rump/librump/rumpkern/rump.c Mon Jan 14 16:45:47 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: rump.c,v 1.248 2013/01/14 16:35:06 pooka Exp $ */
+/* $NetBSD: rump.c,v 1.249 2013/01/14 16:45:47 pooka Exp $ */
/*
* Copyright (c) 2007-2011 Antti Kantee. All Rights Reserved.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.248 2013/01/14 16:35:06 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.249 2013/01/14 16:45:47 pooka Exp $");
#include <sys/systm.h>
#define ELFSIZE ARCH_ELFSIZE
@@ -126,31 +126,15 @@ rump_aiodone_worker(struct work *wk, voi
static int rump_inited;
-/*
- * Make sure pnbuf_cache is available even without vfs
- */
-int rump_initpnbufpool(void);
-int rump_initpnbufpool(void)
-{
-
- pnbuf_cache = pool_cache_init(MAXPATHLEN, 0, 0, 0, "pnbufpl",
- NULL, IPL_NONE, NULL, NULL, NULL);
- return EOPNOTSUPP;
-}
+void (*rump_vfs_drainbufs)(int);
+void (*rump_vfs_fini)(void);
int rump__unavailable(void);
int rump__unavailable() {return EOPNOTSUPP;}
-__weak_alias(rump_net_init,rump__unavailable);
-__weak_alias(rump_vfs_init,rump_initpnbufpool);
-__weak_alias(rump_dev_init,rump__unavailable);
-
-__weak_alias(rump_vfs_fini,rump__unavailable);
__weak_alias(biodone,rump__unavailable);
__weak_alias(sopoll,rump__unavailable);
-__weak_alias(rump_vfs_drainbufs,rump__unavailable);
-
void rump__unavailable_vfs_panic(void);
void rump__unavailable_vfs_panic() {panic("vfs component not available");}
__weak_alias(usermount_common_policy,rump__unavailable_vfs_panic);
@@ -403,10 +387,18 @@ rump__init(int rump_version)
rump_component_init(RUMP_COMPONENT_KERN);
- /* these do nothing if not present */
- rump_vfs_init();
- rump_net_init();
- rump_dev_init();
+ /* initialize factions, if present */
+ rump_component_init(RUMP__FACTION_VFS);
+ /* pnbuf_cache is used even without vfs */
+ if (rump_component_count(RUMP__FACTION_VFS) == 0) {
+ pnbuf_cache = pool_cache_init(MAXPATHLEN, 0, 0, 0, "pnbufpl",
+ NULL, IPL_NONE, NULL, NULL, NULL);
+ }
+ rump_component_init(RUMP__FACTION_NET);
+ rump_component_init(RUMP__FACTION_DEV);
+ KASSERT(rump_component_count(RUMP__FACTION_VFS) <= 1
+ && rump_component_count(RUMP__FACTION_NET) <= 1
+ && rump_component_count(RUMP__FACTION_DEV) <= 1);
rump_component_init(RUMP_COMPONENT_KERN_VFS);
@@ -508,6 +500,8 @@ rump__init(int rump_version)
}
}
+ rump_component_init(RUMP_COMPONENT_POSTBOOT);
+
/* release cpu */
rump_unschedule();
@@ -542,7 +536,8 @@ cpu_reboot(int howto, char *bootstr)
/* try to sync */
if (!((howto & RB_NOSYNC) || panicstr)) {
- rump_vfs_fini();
+ if (rump_vfs_fini)
+ rump_vfs_fini();
}
/* your wish is my command */
Index: src/sys/rump/librump/rumpkern/rump_private.h
diff -u src/sys/rump/librump/rumpkern/rump_private.h:1.71 src/sys/rump/librump/rumpkern/rump_private.h:1.72
--- src/sys/rump/librump/rumpkern/rump_private.h:1.71 Tue Oct 9 13:35:50 2012
+++ src/sys/rump/librump/rumpkern/rump_private.h Mon Jan 14 16:45:47 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: rump_private.h,v 1.71 2012/10/09 13:35:50 pooka Exp $ */
+/* $NetBSD: rump_private.h,v 1.72 2013/01/14 16:45:47 pooka Exp $ */
/*
* Copyright (c) 2007-2011 Antti Kantee. All Rights Reserved.
@@ -61,6 +61,12 @@ enum rump_component_type {
RUMP_COMPONENT_VFS,
RUMP_COMPONENT_KERN,
RUMP_COMPONENT_KERN_VFS,
+ RUMP_COMPONENT_POSTINIT,
+
+ RUMP__FACTION_DEV,
+ RUMP__FACTION_VFS,
+ RUMP__FACTION_NET,
+
RUMP_COMPONENT_MAX,
};
struct rump_component {
Index: src/sys/rump/librump/rumpkern/vm.c
diff -u src/sys/rump/librump/rumpkern/vm.c:1.131 src/sys/rump/librump/rumpkern/vm.c:1.132
--- src/sys/rump/librump/rumpkern/vm.c:1.131 Tue Nov 13 20:10:02 2012
+++ src/sys/rump/librump/rumpkern/vm.c Mon Jan 14 16:45:47 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: vm.c,v 1.131 2012/11/13 20:10:02 pooka Exp $ */
+/* $NetBSD: vm.c,v 1.132 2013/01/14 16:45:47 pooka Exp $ */
/*
* Copyright (c) 2007-2011 Antti Kantee. All Rights Reserved.
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vm.c,v 1.131 2012/11/13 20:10:02 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vm.c,v 1.132 2013/01/14 16:45:47 pooka Exp $");
#include <sys/param.h>
#include <sys/atomic.h>
@@ -1106,7 +1106,8 @@ uvm_pageout(void *arg)
* And then drain the pools. Wipe them out ... all of them.
*/
for (pp_first = NULL;;) {
- rump_vfs_drainbufs(10 /* XXX: estimate better */);
+ if (rump_vfs_drainbufs)
+ rump_vfs_drainbufs(10 /* XXX: estimate! */);
succ = pool_drain(&pp);
if (succ || pp == pp_first)
Index: src/sys/rump/librump/rumpnet/rump_net.c
diff -u src/sys/rump/librump/rumpnet/rump_net.c:1.13 src/sys/rump/librump/rumpnet/rump_net.c:1.14
--- src/sys/rump/librump/rumpnet/rump_net.c:1.13 Tue Jan 11 09:22:33 2011
+++ src/sys/rump/librump/rumpnet/rump_net.c Mon Jan 14 16:45:47 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: rump_net.c,v 1.13 2011/01/11 09:22:33 pooka Exp $ */
+/* $NetBSD: rump_net.c,v 1.14 2013/01/14 16:45:47 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.13 2011/01/11 09:22:33 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rump_net.c,v 1.14 2013/01/14 16:45:47 pooka Exp $");
#include <sys/param.h>
@@ -45,8 +45,7 @@ void nocomponent(void);
void nocomponent() {}
__weak_alias(rump_net_components,nocomponent);
-void
-rump_net_init(void)
+RUMP_COMPONENT(RUMP__FACTION_NET)
{
bpf_setops();
Index: src/sys/rump/librump/rumpnet/rump_net_private.h
diff -u src/sys/rump/librump/rumpnet/rump_net_private.h:1.5 src/sys/rump/librump/rumpnet/rump_net_private.h:1.6
--- src/sys/rump/librump/rumpnet/rump_net_private.h:1.5 Mon Mar 1 13:12:20 2010
+++ src/sys/rump/librump/rumpnet/rump_net_private.h Mon Jan 14 16:45:47 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: rump_net_private.h,v 1.5 2010/03/01 13:12:20 pooka Exp $ */
+/* $NetBSD: rump_net_private.h,v 1.6 2013/01/14 16:45:47 pooka Exp $ */
/*
* Copyright (c) 2008 Antti Kantee. All Rights Reserved.
@@ -28,7 +28,6 @@
#ifndef _SYS_RUMP_NET_PRIVATE_H_
#define _SYS_RUMP_NET_PRIVATE_H_
-void rump_net_init(void);
void rump_netisr_init(void);
#define DOMAINADD(dom) \
Index: src/sys/rump/librump/rumpvfs/rump_vfs.c
diff -u src/sys/rump/librump/rumpvfs/rump_vfs.c:1.70 src/sys/rump/librump/rumpvfs/rump_vfs.c:1.71
--- src/sys/rump/librump/rumpvfs/rump_vfs.c:1.70 Thu Nov 22 21:23:08 2012
+++ src/sys/rump/librump/rumpvfs/rump_vfs.c Mon Jan 14 16:45:47 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: rump_vfs.c,v 1.70 2012/11/22 21:23:08 pooka Exp $ */
+/* $NetBSD: rump_vfs.c,v 1.71 2013/01/14 16:45:47 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.70 2012/11/22 21:23:08 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rump_vfs.c,v 1.71 2013/01/14 16:45:47 pooka Exp $");
#include <sys/param.h>
#include <sys/buf.h>
@@ -73,8 +73,23 @@ pvfs_rele(struct proc *p)
cwdfree(p->p_cwdi);
}
-void
-rump_vfs_init(void)
+static void
+fini(void)
+{
+
+ vfs_shutdown();
+}
+
+static void
+drainbufs(int npages)
+{
+
+ mutex_enter(&bufcache_lock);
+ buf_drain(npages);
+ mutex_exit(&bufcache_lock);
+}
+
+RUMP_COMPONENT(RUMP__FACTION_VFS)
{
extern struct devsw_conv devsw_conv0[];
extern int max_devsw_convs;
@@ -83,6 +98,10 @@ rump_vfs_init(void)
int error;
int rv, i;
+ /* initialize indirect interfaces */
+ rump_vfs_fini = fini;
+ rump_vfs_drainbufs = drainbufs;
+
if (rumpuser_getenv("RUMP_NVNODES", buf, sizeof(buf), &error) == 0) {
desiredvnodes = strtoul(buf, NULL, 10);
} else {
@@ -166,13 +185,6 @@ rump_vfs_init(void)
rump_component_init(RUMP_COMPONENT_VFS);
}
-void
-rump_vfs_fini(void)
-{
-
- vfs_shutdown();
-}
-
struct rumpcn {
struct componentname rcn_cn;
char *rcn_path;
@@ -485,12 +497,3 @@ rump_biodone(void *arg, size_t count, in
biodone(bp);
}
-
-void
-rump_vfs_drainbufs(int npages)
-{
-
- mutex_enter(&bufcache_lock);
- buf_drain(npages);
- mutex_exit(&bufcache_lock);
-}
Index: src/sys/rump/librump/rumpvfs/rump_vfs_private.h
diff -u src/sys/rump/librump/rumpvfs/rump_vfs_private.h:1.15 src/sys/rump/librump/rumpvfs/rump_vfs_private.h:1.16
--- src/sys/rump/librump/rumpvfs/rump_vfs_private.h:1.15 Tue Sep 27 01:25:32 2011
+++ src/sys/rump/librump/rumpvfs/rump_vfs_private.h Mon Jan 14 16:45:47 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: rump_vfs_private.h,v 1.15 2011/09/27 01:25:32 christos Exp $ */
+/* $NetBSD: rump_vfs_private.h,v 1.16 2013/01/14 16:45:47 pooka Exp $ */
/*
* Copyright (c) 2008 Antti Kantee. All Rights Reserved.
@@ -31,9 +31,6 @@
#include <sys/types.h>
#include <sys/conf.h>
-void rump_vfs_init(void);
-void rump_vfs_fini(void);
-
void rumpfs_init(void);
int rump_devnull_init(void);
@@ -51,7 +48,8 @@ int rump_vfs_makedevnodes(dev_t, con
devmajor_t, devminor_t, int);
void rump_vfs_builddevs(struct devsw_conv *, size_t numelem);
-void rump_vfs_drainbufs(int);
+extern void (*rump_vfs_drainbufs)(int);
+extern void (*rump_vfs_fini)(void);
#include <sys/mount.h>
#include <sys/vnode.h>