This is an old revision of the document!


VImage kernel options

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

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.

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.

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.1228753651.txt.gz
  • Last modified: 2008/12/08 16:27
  • by BjoernZeeb