svn commit: r215138 - in head/sys: net sys

Andriy Gapon avg at freebsd.org
Thu Nov 11 19:29:06 UTC 2010


on 11/11/2010 21:18 Dimitry Andric said the following:
> Author: dim
> Date: Thu Nov 11 19:18:52 2010
> New Revision: 215138
> URL: http://svn.freebsd.org/changeset/base/215138
> 
> Log:
>   Use the same treatment as in linker_set.h for the __start and __stop
>   symbols of the set_vnet and set_pcpu sections, so those symbols will
>   always be emitted in kernel modules, if they use vnet.h or pcpu.h.

Do I understand it correctly that set_pcpu section itself would not be produced if
DPCPU_DEFINE() is not actually used?

>   Also, for pcpu.h, make the __(start|stop)_set_pcpu declarations, and
>   associated macros invisible to userland, to prevent it picking up these
>   symbols.
>   
>   Reviewed by:	kib
> 
> Modified:
>   head/sys/net/vnet.h
>   head/sys/sys/pcpu.h
> 
> Modified: head/sys/net/vnet.h
> ==============================================================================
> --- head/sys/net/vnet.h	Thu Nov 11 19:17:59 2010	(r215137)
> +++ head/sys/net/vnet.h	Thu Nov 11 19:18:52 2010	(r215138)
> @@ -95,7 +95,9 @@ struct vnet {
>   * Location of the kernel's 'set_vnet' linker set.
>   */
>  extern uintptr_t	*__start_set_vnet;
> +__GLOBL(__start_set_vnet);
>  extern uintptr_t	*__stop_set_vnet;
> +__GLOBL(__stop_set_vnet);
>  
>  #define	VNET_START	(uintptr_t)&__start_set_vnet
>  #define	VNET_STOP	(uintptr_t)&__stop_set_vnet
> 
> Modified: head/sys/sys/pcpu.h
> ==============================================================================
> --- head/sys/sys/pcpu.h	Thu Nov 11 19:17:59 2010	(r215137)
> +++ head/sys/sys/pcpu.h	Thu Nov 11 19:18:52 2010	(r215138)
> @@ -42,11 +42,15 @@
>  #include <sys/resource.h>
>  #include <machine/pcpu.h>
>  
> +#ifdef _KERNEL
> +
>  /*
>   * Define a set for pcpu data.
>   */
>  extern uintptr_t *__start_set_pcpu;
> +__GLOBL(__start_set_pcpu);
>  extern uintptr_t *__stop_set_pcpu;
> +__GLOBL(__stop_set_pcpu);
>  
>  /*
>   * Array of dynamic pcpu base offsets.  Indexed by id.
> @@ -127,6 +131,8 @@ extern uintptr_t dpcpu_off[];
>  	}								\
>  } while(0)
>  
> +#endif /* _KERNEL */
> +
>  /* 
>   * XXXUPS remove as soon as we have per cpu variable
>   * linker sets and can define rm_queue in _rm_lock.h


-- 
Andriy Gapon


More information about the svn-src-head mailing list