NOTE: this information has become obsolete as of FreeBSD 8.0.

VImage kernel options

.. and what they mean from the user or implementation perspective.

VIMAGE

This will be the only option once the entire work is in.

If option VIMAGE is turned on this will allow creation of multiple virtual instances. There will be indirection for each virtual instance like curvimage->vnet->mod_data[TYPE] though things might not be used that way but cached like thread->td_vnet. mod_data[TYPE] will hold the container structures struct vnet_inet, vnet_ipsec, ... for each TPYE like VNET_INET, VNET_IPSEC, ...

If nooption VIMAGE is set or there is no option VIMAGE there will be only one instance and no virtualization will be possible. There will be one global for each container struct. So a type of VNET_INET with the container struct struct vnet_inet will resolve to the global variable struct vnet_inet vnet_inet_0.

VIMAGE_GLOBALS

During the transition period while bringing the work and moving from globals to the container structs to the final product the intermediate option VIMAGE_GLOBALS will be used to distinguish between using the former globals or the container structs.

This option will be removed (along with the globals) as soon as everything was merged. It is basically there to allow benchmarking the same code with either the old globals or the new VImage logic.

option hierachie

If option VIMAGE is defined the final product will be used. If option VIMAGE is not defined the the single global container structs will be used unless option VIMAGE_GLOBALS is given. In that case we will fall back to the old globals.

VIMAGE

VIMAGE_GLOBALS

Result

yes

yes

Not permitted.

yes

no

Support multiple virtual instances.

no

yes

Use the old globals.

no

no

Use single global container struct instances.

VIMAGE/KernelOptions (last edited 2014-10-12T23:03:23+0000 by CraigRodrigues)