Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Dec 2008 21:07:03 GMT
From:      Marko Zec <zec@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 154661 for review
Message-ID:  <200812142107.mBEL73kH026738@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=154661

Change 154661 by zec@zec_tca51 on 2008/12/14 21:06:10

	Unbreak GENERIC / LINT / VIMAGE_GLOBALS and VIMAGE builds.

Affected files ...

.. //depot/projects/vimage/src/sys/kern/kern_vimage.c#72 edit
.. //depot/projects/vimage/src/sys/kern/uipc_domain.c#16 edit
.. //depot/projects/vimage/src/sys/netinet/accf_http.c#6 edit
.. //depot/projects/vimage/src/sys/netinet/in_rmx.c#27 edit
.. //depot/projects/vimage/src/sys/netinet/ip_fw.h#24 edit
.. //depot/projects/vimage/src/sys/netinet/ip_fw2.c#61 edit
.. //depot/projects/vimage/src/sys/netinet/ip_var.h#16 edit
.. //depot/projects/vimage/src/sys/sys/vimage.h#75 edit

Differences ...

==== //depot/projects/vimage/src/sys/kern/kern_vimage.c#72 (text+ko) ====

@@ -62,6 +62,8 @@
 #include <net/ethernet.h>
 #include <net/vnet.h>
 
+struct vnet_modlink;
+
 //#define DEBUG_ORDERING
 
 MALLOC_DEFINE(M_VIMAGE, "vimage", "virtual image resource container");
@@ -69,12 +71,19 @@
 MALLOC_DEFINE(M_VPROCG, "vprocg", "process group control block");
 MALLOC_DEFINE(M_VCPU, "vcpu", "cpu resource control block");
 
+#ifdef VIMAGE
 static struct vimage *vi_alloc(struct vimage *, char *);
 static int vi_destroy(struct vimage *);
-static void vnet_mod_complete_registration(struct vnet_modlink *);
 static int vnet_mod_constructor(struct vnet_modlink *);
 static int vnet_mod_destructor(struct vnet_modlink *);
+#endif
 
+#ifndef VIMAGE
+#ifndef VIMAGE_GLOBALS
+struct vprocg vprocg_0;
+#endif
+#endif
+
 #ifdef VI_PREALLOC_SIZE
 /*
  * A private memory allocator can be enabled by setting VI_PREALLOC_SIZE
@@ -112,33 +121,40 @@
 #define vi_free(addr, type) free((addr), (type))
 #endif /* VI_PREALLOC_SIZE */
 
-struct vimage_list_head vimage_head;
-struct vnet_list_head vnet_head;
-struct vprocg_list_head vprocg_head;
-struct vcpu_list_head vcpu_head;
+#ifndef VIMAGE_GLOBALS
+static TAILQ_HEAD(vnet_modlink_head, vnet_modlink) vnet_modlink_head;
+static TAILQ_HEAD(vnet_modpending_head, vnet_modlink) vnet_modpending_head;
+static void vnet_mod_complete_registration(struct vnet_modlink *);
 
-struct cv vnet_list_condvar;
-struct mtx vnet_list_refc_mtx;
-int vnet_list_refc = 0;
+int
+vi_symlookup(struct kld_sym_lookup *lookup, char *symstr)
+{
+	struct vnet_modlink *vml;
+	struct vnet_symmap *mapentry;
 
-struct mtx vcpu_list_mtx;
+	TAILQ_FOREACH(vml, &vnet_modlink_head, vml_mod_le) {
 
-#define VNET_LIST_LOCK()						\
-	mtx_lock(&vnet_list_refc_mtx);					\
-	while (vnet_list_refc != 0)					\
-		cv_wait(&vnet_list_condvar, &vnet_list_refc_mtx);
+		if (vml->vml_modinfo->vmi_symmap == NULL)
+			continue;
 
-#define VNET_LIST_UNLOCK()						\
-	mtx_unlock(&vnet_list_refc_mtx);
-
-static u_int last_vi_id = 0;
-static u_int last_vnet_id = 0;
-static u_int last_vprocg_id = 0;
-static u_int last_vcpu_id = 0;
+		for (mapentry = vml->vml_modinfo->vmi_symmap;
+		     mapentry->name != NULL; mapentry++) {
+			if (strcmp(symstr, mapentry->name) == 0) {
+#ifdef VIMAGE
+				lookup->symvalue =
+				    (u_long) curvnet->mod_data[vml->vml_modinfo->vmi_id];
+				lookup->symvalue += mapentry->offset;
+#else
+				lookup->symvalue = (u_long) mapentry->offset;
+#endif
+				lookup->symsize = mapentry->size;
+				return (0);
+			}
+		}
+	}
+	return (ENOENT);
+}
 
-static TAILQ_HEAD(vnet_modlink_head, vnet_modlink) vnet_modlink_head;
-static TAILQ_HEAD(vnet_modpending_head, vnet_modlink) vnet_modpending_head;
-
 void
 vnet_mod_register(const struct vnet_modinfo *vmi)
 {
@@ -200,11 +216,13 @@
 
 	TAILQ_INSERT_TAIL(&vnet_modlink_head, vml, vml_mod_le);
 
+#ifdef VIMAGE
 	VNET_FOREACH(vnet_iter) {
 		CURVNET_SET_QUIET(vnet_iter);
 		vnet_mod_constructor(vml);
 		CURVNET_RESTORE();
 	}
+#endif
 
 	/* Check for pending modules depending on us */
 	do {
@@ -225,7 +243,33 @@
 		}
 	} while (vml_iter != NULL);
 }
+#endif /* !VIMAGE_GLOBALS */
+
+#ifdef VIMAGE
+struct vimage_list_head vimage_head;
+struct vnet_list_head vnet_head;
+struct vprocg_list_head vprocg_head;
+struct vcpu_list_head vcpu_head;
+
+struct cv vnet_list_condvar;
+struct mtx vnet_list_refc_mtx;
+int vnet_list_refc = 0;
+
+struct mtx vcpu_list_mtx;
+
+#define VNET_LIST_LOCK()						\
+	mtx_lock(&vnet_list_refc_mtx);					\
+	while (vnet_list_refc != 0)					\
+		cv_wait(&vnet_list_condvar, &vnet_list_refc_mtx);
 
+#define VNET_LIST_UNLOCK()						\
+	mtx_unlock(&vnet_list_refc_mtx);
+
+static u_int last_vi_id = 0;
+static u_int last_vnet_id = 0;
+static u_int last_vprocg_id = 0;
+static u_int last_vcpu_id = 0;
+
 void
 vnet_mod_deregister(const struct vnet_modinfo *vmi)
 {
@@ -609,32 +653,6 @@
 }
 
 
-int
-vi_symlookup(struct kld_sym_lookup *lookup, char *symstr)
-{
-	struct vnet_modlink *vml;
-	struct vnet_symmap *mapentry;
-
-	TAILQ_FOREACH(vml, &vnet_modlink_head, vml_mod_le) {
-
-		if (vml->vml_modinfo->vmi_symmap == NULL)
-			continue;
-
-		for (mapentry = vml->vml_modinfo->vmi_symmap;
-		     mapentry->name != NULL; mapentry++) {
-			if (strcmp(symstr, mapentry->name) == 0) {
-				lookup->symvalue =
-				    (u_long) curvnet->mod_data[vml->vml_modinfo->vmi_id];
-				lookup->symvalue += mapentry->offset;
-				lookup->symsize = mapentry->size;
-				return (0);
-			}
-		}
-	}
-	return (ENOENT);
-}
-
-
 struct vimage *
 vi_alloc(struct vimage *parent, char *name)
 {
@@ -1005,3 +1023,5 @@
 	}
 }
 #endif
+
+#endif /* VIMAGE */

==== //depot/projects/vimage/src/sys/kern/uipc_domain.c#16 (text+ko) ====


==== //depot/projects/vimage/src/sys/netinet/accf_http.c#6 (text+ko) ====

@@ -78,6 +78,12 @@
 	int	_parse_http_version;
 };
 
+#ifndef VIMAGE
+#ifndef VIMAGE_GLOBALS
+struct vnet_accf_http vnet_accf_http_0;
+#endif
+#endif
+
 #define INIT_VNET_ACCF_HTTP(vnet) \
         INIT_FROM_VNET(vnet, VNET_MOD_ACCF_HTTP, struct vnet_accf_http, vnet_accf_http)
 

==== //depot/projects/vimage/src/sys/netinet/in_rmx.c#27 (text+ko) ====


==== //depot/projects/vimage/src/sys/netinet/ip_fw.h#24 (text+ko) ====

@@ -736,7 +736,6 @@
 	u_int64_t _norule_counter;
 	struct callout _ipfw_timeout;
 	eventhandler_tag _ifaddr_event_tag;
-	struct ip_fw_ugid _fw_ugid_cache;
 };
 
 #ifndef VIMAGE
@@ -782,7 +781,6 @@
 #define	V_ipfw_timeout		VNET_IPFW(ipfw_timeout)
 #define	V_ipfw_timeout		VNET_IPFW(ipfw_timeout)
 #define	V_ifaddr_event_tag	VNET_IPFW(ifaddr_event_tag)
-#define	V_fw_ugid_cache		VNET_IPFW(fw_ugid_cache)
 
 #endif /* _KERNEL */
 #endif /* _IPFW2_H */

==== //depot/projects/vimage/src/sys/netinet/ip_fw2.c#61 (text+ko) ====

@@ -289,15 +289,15 @@
 SYSCTL_V_INT(V_NET, vnet_ipfw, _net_inet_ip_fw, OID_AUTO, dyn_keepalive,
     CTLFLAG_RW, dyn_keepalive, 0, "Enable keepalives for dyn. rules");
 
-#ifndef VIMAGE
-static int fw_deny_unknown_exthdrs;
-#endif
-
 #ifdef INET6
 /*
  * IPv6 specific variables
  */
 
+#ifdef VIMAGE_GLOBALS
+static int fw_deny_unknown_exthdrs;
+#endif
+
 SYSCTL_DECL(_net_inet6_ip6);
 SYSCTL_NODE(_net_inet6_ip6, OID_AUTO, fw, CTLFLAG_RW | CTLFLAG_SECURE,
 	0, "Firewall");
@@ -311,10 +311,6 @@
 #endif /* INET6 */
 #endif /* SYSCTL_NODE */
 
-#ifdef VIMAGE_GLOBALS
-static int fw_deny_unknown_exthdrs;
-#endif
-
 /*
  * L3HDR maps an ipv4 pointer into a layer3 header pointer of type T
  * Other macros just cast void * into the appropriate type
@@ -2161,9 +2157,7 @@
 	 * these types of constraints, as well as decrease contention
 	 * on pcb related locks.
 	 */
-#ifndef VIMAGE 
-	struct ip_fw_ugid fw_ugid_cache;	/* XXX Marko revisit this */
-#endif
+	struct ip_fw_ugid fw_ugid_cache;
 	int ugid_lookup = 0;
 
 	/*
@@ -2623,7 +2617,7 @@
 						    proto, oif,
 						    dst_ip, dst_port,
 						    src_ip, src_port,
-						    &V_fw_ugid_cache,
+						    &fw_ugid_cache,
 						    &ugid_lookup, args->inp);
 				break;
 

==== //depot/projects/vimage/src/sys/netinet/ip_var.h#16 (text+ko) ====

@@ -181,7 +181,6 @@
 extern int	ip_do_randomid;
 extern int	ip_defttl;		/* default IP ttl */
 extern int	ipforwarding;		/* ip forwarding */
-extern int	ip_do_randomid;
 #ifdef IPSTEALTH
 extern int	ipstealth;		/* stealth forwarding */
 #endif

==== //depot/projects/vimage/src/sys/sys/vimage.h#75 (text+ko) ====

@@ -50,7 +50,6 @@
 struct	vprocg;
 struct	vnet;
 struct	vi_req;
-struct	vnet_modinfo;
 struct	kld_sym_lookup; 
 
 struct	ifnet;		/* XXX must go away */
@@ -66,16 +65,88 @@
 #endif
 
 #ifdef VIMAGE
+#define curvnet curthread->td_vnet
+#else
+#define curvnet NULL
+#endif
 
-#define curvnet curthread->td_vnet
+#define VNET_SYMMAP(mod, name)						\
+	{ #name, offsetof(struct vnet_##mod, _##name),			\
+	sizeof(((struct vnet_##mod *) curthread)->_##name) }
 
-#define basevnet thread0.td_ucred->cr_vimage->v_net
-#define basevprocg thread0.td_ucred->cr_vimage->v_procg
-#define basevcpu thread0.td_ucred->cr_vimage->v_cpu
+#ifdef VIMAGE
+#define VNET_MOD_DECLARE(m_name_uc, m_name_lc, m_iattach, m_idetach, 	\
+    m_dependson, m_symmap)						\
+	static const struct vnet_modinfo vnet_##m_name_lc##_modinfo = {	\
+		.vmi_id			= VNET_MOD_##m_name_uc,		\
+		.vmi_dependson		= VNET_MOD_##m_dependson,	\
+		.vmi_name		= #m_name_lc,			\
+		.vmi_iattach		= m_iattach,			\
+		.vmi_idetach		= m_idetach,			\
+		.vmi_struct_size	=				\
+			sizeof(struct vnet_##m_name_lc),		\
+		.vmi_symmap		= m_symmap			\
+};
+#define VNET_MOD_DECLARE_STATELESS(m_name_uc, m_name_lc, m_iattach, m_idetach, \
+    m_dependson)							\
+	static const struct vnet_modinfo vnet_##m_name_lc##_modinfo = {	\
+		.vmi_id			= VNET_MOD_##m_name_uc,		\
+		.vmi_dependson		= VNET_MOD_##m_dependson,	\
+		.vmi_name		= #m_name_lc,			\
+		.vmi_iattach		= m_iattach,			\
+		.vmi_idetach		= m_idetach			\
+};
+#else
+#ifdef VIMAGE_GLOBALS
+#define VNET_MOD_DECLARE(m_name_uc, m_name_lc, m_iattach, m_idetach, 	\
+    m_dependson, m_symmap)
+#define VNET_MOD_DECLARE_STATELESS(m_name_uc, m_name_lc, m_iattach, m_idetach, \
+    m_dependson)
+#else
+#define VNET_MOD_DECLARE(m_name_uc, m_name_lc, m_iattach, m_idetach, 	\
+    m_dependson, m_symmap)						\
+	static const struct vnet_modinfo vnet_##m_name_lc##_modinfo = {	\
+		.vmi_symmap		= m_symmap			\
+};
+#define VNET_MOD_DECLARE_STATELESS(m_name_uc, m_name_lc, m_iattach, m_idetach, \
+    m_dependson)
+#endif
+#endif
 
 typedef int vnet_attach_fn(const void *);
 typedef int vnet_detach_fn(const void *);
 
+#ifndef VIMAGE_GLOBALS
+
+struct vnet_symmap {
+	char	*name;
+	size_t	offset;
+	size_t	size;
+};
+
+struct vnet_modinfo {
+	u_int				vmi_id;
+	u_int				vmi_dependson;
+	char				*vmi_name;
+	vnet_attach_fn			*vmi_iattach;
+	vnet_detach_fn			*vmi_idetach;
+	size_t				vmi_struct_size;
+	struct vnet_symmap		*vmi_symmap;
+};
+
+struct vnet_modlink {
+	TAILQ_ENTRY(vnet_modlink)	vml_mod_le;
+	const struct vnet_modinfo	*vml_modinfo;
+	const void			*vml_iarg;
+	const char			*vml_iname;
+};
+#endif
+
+#define VNET_SYMMAP_END		{ NULL, 0 }
+
+#define basevnet thread0.td_ucred->cr_vimage->v_net
+#define basevprocg thread0.td_ucred->cr_vimage->v_procg
+#define basevcpu thread0.td_ucred->cr_vimage->v_cpu
 
 #define	V_GLOBAL	0
 #define	V_NET		1
@@ -125,6 +196,8 @@
 #define V_MOD_vprocg		0
 #define V_MOD_vcpu		0
 
+#ifdef VIMAGE
+
 struct vnet {
 	void	*mod_data[VNET_MOD_MAX];
 
@@ -138,59 +211,6 @@
 	u_int	vnet_magic_n;
 };
 
-struct vnet_symmap {
-	char	*name;
-	size_t	offset;
-	size_t	size;
-};
-
-struct vnet_modinfo {
-	u_int				vmi_id;
-	u_int				vmi_dependson;
-	char				*vmi_name;
-	vnet_attach_fn			*vmi_iattach;
-	vnet_detach_fn			*vmi_idetach;
-	size_t				vmi_struct_size;
-	struct vnet_symmap		*vmi_symmap;
-};
-
-struct vnet_modlink {
-	TAILQ_ENTRY(vnet_modlink)	vml_mod_le;
-	const struct vnet_modinfo	*vml_modinfo;
-	const void			*vml_iarg;
-	const char			*vml_iname;
-};
-
-#define VNET_MOD_DECLARE(m_name_uc, m_name_lc, m_iattach, m_idetach, 	\
-    m_dependson, m_symmap)						\
-	static const struct vnet_modinfo vnet_##m_name_lc##_modinfo = {	\
-		.vmi_id			= VNET_MOD_##m_name_uc,		\
-		.vmi_dependson		= VNET_MOD_##m_dependson,	\
-		.vmi_name		= #m_name_lc,			\
-		.vmi_iattach		= m_iattach,			\
-		.vmi_idetach		= m_idetach,			\
-		.vmi_struct_size	=				\
-			sizeof(struct vnet_##m_name_lc),		\
-		.vmi_symmap		= m_symmap			\
-};
-
-#define VNET_MOD_DECLARE_STATELESS(m_name_uc, m_name_lc, m_iattach, m_idetach, \
-    m_dependson)							\
-	static const struct vnet_modinfo vnet_##m_name_lc##_modinfo = {	\
-		.vmi_id			= VNET_MOD_##m_name_uc,		\
-		.vmi_dependson		= VNET_MOD_##m_dependson,	\
-		.vmi_name		= #m_name_lc,			\
-		.vmi_iattach		= m_iattach,			\
-		.vmi_idetach		= m_idetach			\
-};
-
-#define VNET_SYMMAP(mod, name)						\
-	{ #name, offsetof(struct vnet_##mod, _##name),			\
-	sizeof(((struct vnet_##mod *) curthread)->_##name) }
-
-#define VNET_SYMMAP_END							\
-	{ NULL, 0 }
-
 #define VNET_MAGIC_N 0x3e0d8f29
 
 
@@ -276,13 +296,7 @@
 
 #else /* !VIMAGE */
 
-#define VNET_SYMMAP_END		{ NULL, 0 }
-
 /* Non-VIMAGE null-macros */
-#define VNET_MOD_DECLARE(m_name_uc, m_name_lc, m_iattach, m_idetach, 	\
-    m_dependson, m_symmap)
-#define VNET_MOD_DECLARE_STATELESS(m_name_uc, m_name_lc, m_iattach, m_idetach, \
-    m_dependson)
 #define CURVNET_SET(arg)
 #define CURVNET_SET_QUIET(arg)
 #define CURVNET_RESTORE()



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812142107.mBEL73kH026738>