Module Name: src Committed By: pooka Date: Fri Feb 14 01:43:13 UTC 2014
Modified Files: src/sys/rump/librump/rumpnet: netisr.c rump_net.c rump_net_private.h src/sys/rump/net/lib/libnetinet: component.c src/sys/rump/net/lib/libnetinet6: component.c src/sys/rump/net/lib/libnetmpls: component.c Log Message: Register netisr's from component constructors instead of via a hardcoded global list. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/rump/librump/rumpnet/netisr.c cvs rdiff -u -r1.16 -r1.17 src/sys/rump/librump/rumpnet/rump_net.c cvs rdiff -u -r1.8 -r1.9 src/sys/rump/librump/rumpnet/rump_net_private.h cvs rdiff -u -r1.9 -r1.10 src/sys/rump/net/lib/libnetinet/component.c cvs rdiff -u -r1.3 -r1.4 src/sys/rump/net/lib/libnetinet6/component.c cvs rdiff -u -r1.1 -r1.2 src/sys/rump/net/lib/libnetmpls/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/librump/rumpnet/netisr.c diff -u src/sys/rump/librump/rumpnet/netisr.c:1.6 src/sys/rump/librump/rumpnet/netisr.c:1.7 --- src/sys/rump/librump/rumpnet/netisr.c:1.6 Thu Jul 18 15:59:27 2013 +++ src/sys/rump/librump/rumpnet/netisr.c Fri Feb 14 01:43:13 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: netisr.c,v 1.6 2013/07/18 15:59:27 kefren Exp $ */ +/* $NetBSD: netisr.c,v 1.7 2014/02/14 01:43:13 pooka Exp $ */ /* * Copyright (c) 2008 Antti Kantee. All Rights Reserved. @@ -26,17 +26,11 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netisr.c,v 1.6 2013/07/18 15:59:27 kefren Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netisr.c,v 1.7 2014/02/14 01:43:13 pooka Exp $"); #include <sys/param.h> #include <sys/intr.h> -#include <netinet/in.h> -#include <netinet/ip_var.h> -#include <netinet/if_inarp.h> -#include <netinet/ip6.h> -#include <netinet6/ip6_var.h> -#include <netmpls/mpls_var.h> #include <net/netisr.h> #include <rump/rumpuser.h> @@ -51,48 +45,10 @@ schednetisr(int isr) softint_schedule(netisrs[isr]); } -/* - * Aliases are needed only for static linking (dlsym() is not supported). - */ -void __netisr_stub(void); -void -__netisr_stub(void) -{ - - panic("netisr called but networking stack missing"); -} -__weak_alias(ipintr,__netisr_stub); -__weak_alias(arpintr,__netisr_stub); -__weak_alias(ip6intr,__netisr_stub); -__weak_alias(mplsintr,__netisr_stub); - void -rump_netisr_init(void) +rump_netisr_register(int level, void (*handler)(void)) { - void *iphand, *arphand, *ip6hand, *mplshand, *sym; - iphand = ipintr; - if ((sym = rumpuser_dl_globalsym("rumpns_ipintr")) != NULL) - iphand = sym; - - arphand = arpintr; - if ((sym = rumpuser_dl_globalsym("rumpns_arpintr")) != NULL) - arphand = sym; - - ip6hand = ip6intr; - if ((sym = rumpuser_dl_globalsym("rumpns_ip6intr")) != NULL) - ip6hand = sym; - - mplshand = mplsintr; - if ((sym = rumpuser_dl_globalsym("rumpns_mplsintr")) != NULL) - mplshand = sym; - - netisrs[NETISR_IP] = softint_establish(SOFTINT_NET | SOFTINT_MPSAFE, - (void (*)(void *))iphand, NULL); - netisrs[NETISR_ARP] = softint_establish(SOFTINT_NET | SOFTINT_MPSAFE, - (void (*)(void *))arphand, NULL); - netisrs[NETISR_IPV6] = softint_establish(SOFTINT_NET | SOFTINT_MPSAFE, - (void (*)(void *))ip6hand, NULL); - netisrs[NETISR_MPLS] = softint_establish(SOFTINT_NET | SOFTINT_MPSAFE, - (void (*)(void *))mplshand, NULL); + netisrs[level] = softint_establish(SOFTINT_NET | SOFTINT_MPSAFE, + (void (*)(void *))handler, NULL); } Index: src/sys/rump/librump/rumpnet/rump_net.c diff -u src/sys/rump/librump/rumpnet/rump_net.c:1.16 src/sys/rump/librump/rumpnet/rump_net.c:1.17 --- src/sys/rump/librump/rumpnet/rump_net.c:1.16 Mon Jan 14 16:50:54 2013 +++ src/sys/rump/librump/rumpnet/rump_net.c Fri Feb 14 01:43:13 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: rump_net.c,v 1.16 2013/01/14 16:50:54 pooka Exp $ */ +/* $NetBSD: rump_net.c,v 1.17 2014/02/14 01:43:13 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.16 2013/01/14 16:50:54 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rump_net.c,v 1.17 2014/02/14 01:43:13 pooka Exp $"); #include <sys/param.h> @@ -50,7 +50,6 @@ RUMP_COMPONENT(RUMP__FACTION_NET) soinit(); domaininit(false); - rump_netisr_init(); rump_component_init(RUMP_COMPONENT_NET); rump_component_init(RUMP_COMPONENT_NET_ROUTE); Index: src/sys/rump/librump/rumpnet/rump_net_private.h diff -u src/sys/rump/librump/rumpnet/rump_net_private.h:1.8 src/sys/rump/librump/rumpnet/rump_net_private.h:1.9 --- src/sys/rump/librump/rumpnet/rump_net_private.h:1.8 Fri Feb 14 01:27:48 2014 +++ src/sys/rump/librump/rumpnet/rump_net_private.h Fri Feb 14 01:43:13 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: rump_net_private.h,v 1.8 2014/02/14 01:27:48 pooka Exp $ */ +/* $NetBSD: rump_net_private.h,v 1.9 2014/02/14 01:43:13 pooka Exp $ */ /* * Copyright (c) 2008 Antti Kantee. All Rights Reserved. @@ -28,7 +28,7 @@ #ifndef _SYS_RUMP_NET_PRIVATE_H_ #define _SYS_RUMP_NET_PRIVATE_H_ -void rump_netisr_init(void); +void rump_netisr_register(int, void (*)(void)); #define DOMAINADD(dom) \ do { \ Index: src/sys/rump/net/lib/libnetinet/component.c diff -u src/sys/rump/net/lib/libnetinet/component.c:1.9 src/sys/rump/net/lib/libnetinet/component.c:1.10 --- src/sys/rump/net/lib/libnetinet/component.c:1.9 Thu Jan 2 18:29:01 2014 +++ src/sys/rump/net/lib/libnetinet/component.c Fri Feb 14 01:43:13 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.9 2014/01/02 18:29:01 pooka Exp $ */ +/* $NetBSD: component.c,v 1.10 2014/02/14 01:43:13 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.9 2014/01/02 18:29:01 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.10 2014/02/14 01:43:13 pooka Exp $"); #include <sys/param.h> #include <sys/domain.h> @@ -36,8 +36,11 @@ __KERNEL_RCSID(0, "$NetBSD: component.c, #include <sys/socketvar.h> #include <net/if.h> +#include <net/netisr.h> #include <netinet/in.h> #include <netinet/in_var.h> +#include <netinet/ip_var.h> +#include <netinet/if_inarp.h> #include "rump_private.h" #include "rump_net_private.h" @@ -52,6 +55,9 @@ RUMP_COMPONENT(RUMP_COMPONENT_NET) DOMAINADD(inetdomain); carpattach(1); + + rump_netisr_register(NETISR_IP, ipintr); + rump_netisr_register(NETISR_ARP, arpintr); } RUMP_COMPONENT(RUMP_COMPONENT_NET_IFCFG) Index: src/sys/rump/net/lib/libnetinet6/component.c diff -u src/sys/rump/net/lib/libnetinet6/component.c:1.3 src/sys/rump/net/lib/libnetinet6/component.c:1.4 --- src/sys/rump/net/lib/libnetinet6/component.c:1.3 Thu Jan 2 18:29:01 2014 +++ src/sys/rump/net/lib/libnetinet6/component.c Fri Feb 14 01:43:13 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.3 2014/01/02 18:29:01 pooka Exp $ */ +/* $NetBSD: component.c,v 1.4 2014/02/14 01:43:13 pooka Exp $ */ /* * Copyright (c) 2013 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.3 2014/01/02 18:29:01 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.4 2014/02/14 01:43:13 pooka Exp $"); #include <sys/param.h> #include <sys/domain.h> @@ -34,6 +34,12 @@ __KERNEL_RCSID(0, "$NetBSD: component.c, #include <sys/socketvar.h> #include <net/if.h> +#include <net/netisr.h> + +#include <netinet/in.h> +#include <netinet/ip_var.h> +#include <netinet/ip6.h> +#include <netinet6/ip6_var.h> #include "rump_private.h" #include "rump_net_private.h" @@ -43,6 +49,8 @@ RUMP_COMPONENT(RUMP_COMPONENT_NET) extern struct domain inet6domain; DOMAINADD(inet6domain); + + rump_netisr_register(NETISR_IPV6, ip6intr); } RUMP_COMPONENT(RUMP_COMPONENT_NET_IFCFG) Index: src/sys/rump/net/lib/libnetmpls/component.c diff -u src/sys/rump/net/lib/libnetmpls/component.c:1.1 src/sys/rump/net/lib/libnetmpls/component.c:1.2 --- src/sys/rump/net/lib/libnetmpls/component.c:1.1 Thu Jul 18 15:59:28 2013 +++ src/sys/rump/net/lib/libnetmpls/component.c Fri Feb 14 01:43:13 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: component.c,v 1.1 2013/07/18 15:59:28 kefren Exp $ */ +/* $NetBSD: component.c,v 1.2 2014/02/14 01:43:13 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -31,15 +31,18 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.1 2013/07/18 15:59:28 kefren Exp $"); +__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.2 2014/02/14 01:43:13 pooka Exp $"); #include <sys/param.h> #include <sys/domain.h> #include <sys/protosw.h> #include <net/if.h> +#include <net/netisr.h> #include <net/route.h> +#include <netmpls/mpls_var.h> + #include "rump_private.h" #include "rump_net_private.h" @@ -50,6 +53,8 @@ RUMP_COMPONENT(RUMP_COMPONENT_NET) extern struct domain mplsdomain; DOMAINADD(mplsdomain); + + rump_netisr_register(NETISR_MPLS, mplsintr); } RUMP_COMPONENT(RUMP_COMPONENT_NET_IF)