vimage and curvnet.

Julian Elischer julian at elischer.org
Fri Sep 19 17:55:06 UTC 2008


Marko Zec wrote:
> http://perforce.freebsd.org/chv.cgi?CH=150125
> 
> Change 150125 by zec at zec_tpx32 on 2008/09/19 17:43:14
> 
> 	curvnet is never set on entry to sysctl handlers, thus
> 	set the vnet context via TD_TO_VNET(curthread), because
> 	all threads must have a cred->vimage->vnet context set.

it seems to me that vnet is an important enough variable that we could 
put it in the pcpu structure and have the scheduler set it up on 
context switches when vimage is compiled in.

thus it would always be directly available.
i.e. %gs:CURVNET_OFFSET  or whatever the syntax is on x86
and the equivalent on other architectures.


> 
> Affected files ...
> 
> .. //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#14 edit
> 
> Differences ...
> 
> ==== //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#14 (text+ko) ====
> 
> @@ -119,7 +119,7 @@
>  static int
>  sysctl_net_inet_tcp_mss_check(SYSCTL_HANDLER_ARGS)
>  {
> -	INIT_VNET_INET(curvnet);
> +	INIT_VNET_INET(TD_TO_VNET(curthread));
>  	int error, new;
>  
>  	new = V_tcp_mssdflt;
> @@ -141,7 +141,7 @@
>  static int
>  sysctl_net_inet_tcp_mss_v6_check(SYSCTL_HANDLER_ARGS)
>  {
> -	INIT_VNET_INET6(curvnet);
> +	INIT_VNET_INET6(TD_TO_VNET(curthread));
>  	int error, new;
>  
>  	new = V_tcp_v6mssdflt;



More information about the freebsd-virtualization mailing list