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>