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>

Reply via email to