svn commit: r195778 - in head/sys: kern net

Robert Watson rwatson at FreeBSD.org
Mon Jul 20 07:50:51 UTC 2009


Author: rwatson
Date: Mon Jul 20 07:50:50 2009
New Revision: 195778
URL: http://svn.freebsd.org/changeset/base/195778

Log:
  Add macros VNET_SETNAME and VNET_SYMPREFIX, and expose to userspace if
  _WANT_VNET is defined.  This way we don't need separate definitions in
  libkvm.
  
  Reviewed by:	bz
  Approved by:	re (vimage blanket)

Modified:
  head/sys/kern/link_elf_obj.c
  head/sys/net/vnet.h

Modified: head/sys/kern/link_elf_obj.c
==============================================================================
--- head/sys/kern/link_elf_obj.c	Mon Jul 20 06:12:23 2009	(r195777)
+++ head/sys/kern/link_elf_obj.c	Mon Jul 20 07:50:50 2009	(r195778)
@@ -350,7 +350,7 @@ link_elf_link_preload(linker_class_t cls
 				ef->progtab[pb].addr = dpcpu;
 #ifdef VIMAGE
 			} else if (ef->progtab[pb].name != NULL &&
-			    !strcmp(ef->progtab[pb].name, "set_vnet")) {
+			    !strcmp(ef->progtab[pb].name, VNET_SETNAME)) {
 				void *vnet_data;
 
 				vnet_data = vnet_data_alloc(shdr[i].sh_size);
@@ -756,7 +756,7 @@ link_elf_load_file(linker_class_t cls, c
 				    dpcpu_alloc(shdr[i].sh_size);
 #ifdef VIMAGE
 			else if (ef->progtab[pb].name != NULL &&
-			    !strcmp(ef->progtab[pb].name, "set_vnet"))
+			    !strcmp(ef->progtab[pb].name, VNET_SETNAME))
 				ef->progtab[pb].addr =
 				    vnet_data_alloc(shdr[i].sh_size);
 #endif
@@ -789,7 +789,7 @@ link_elf_load_file(linker_class_t cls, c
 #ifdef VIMAGE
 				else if (ef->progtab[pb].addr !=
 				    (void *)mapbase &&
-				    !strcmp(ef->progtab[pb].name, "set_vnet"))
+				    !strcmp(ef->progtab[pb].name, VNET_SETNAME))
 					vnet_data_copy(ef->progtab[pb].addr,
 					    shdr[i].sh_size);
 #endif
@@ -909,7 +909,7 @@ link_elf_unload_file(linker_file_t file)
 				dpcpu_free(ef->progtab[i].addr,
 				    ef->progtab[i].size);
 #ifdef VIMAGE
-			else if (!strcmp(ef->progtab[i].name, "set_vnet"))
+			else if (!strcmp(ef->progtab[i].name, VNET_SETNAME))
 				vnet_data_free(ef->progtab[i].addr,
 				    ef->progtab[i].size);
 #endif

Modified: head/sys/net/vnet.h
==============================================================================
--- head/sys/net/vnet.h	Mon Jul 20 06:12:23 2009	(r195777)
+++ head/sys/net/vnet.h	Mon Jul 20 07:50:50 2009	(r195778)
@@ -37,19 +37,26 @@
 #ifndef _NET_VNET_H_
 #define	_NET_VNET_H_
 
+#if defined(_KERNEL) || defined(_WANT_VNET)
+
+#define	VNET_SETNAME		"set_vnet"
+#define	VNET_SYMPREFIX		"vnet_entry_"
+
+#endif
+
 #ifdef _KERNEL
 #ifdef VIMAGE
 
 #if defined(__arm__)
-__asm__(".section set_vnet, \"aw\", %progbits");
+__asm__(".section " VNET_SETNAME ", \"aw\", %progbits");
 #else
-__asm__(".section set_vnet, \"aw\", @progbits");
+__asm__(".section " VNET_SETNAME ", \"aw\", @progbits");
 #endif
 __asm__(".previous");
 
 #define	VNET_NAME(n)		vnet_entry_##n
 #define	VNET_DECLARE(t, n)	extern t VNET_NAME(n)
-#define	VNET_DEFINE(t, n)	t VNET_NAME(n) __section("set_vnet") __used
+#define	VNET_DEFINE(t, n)	t VNET_NAME(n) __section(VNET_SETNAME) __used
 #define	_VNET_PTR(b, n)		(__typeof(VNET_NAME(n))*)		\
 				    ((b) + (uintptr_t)&VNET_NAME(n))
 


More information about the svn-src-head mailing list