PERFORCE change 145189 for review
Julian Elischer
julian at FreeBSD.org
Mon Jul 14 05:08:36 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=145189
Change 145189 by julian at julian_trafmon1 on 2008/07/14 05:07:45
Slight cleanups after talking with Marko.
Affected files ...
.. //depot/projects/vimage/porting_to_vimage.txt#4 edit
Differences ...
==== //depot/projects/vimage/porting_to_vimage.txt#4 (text+ko) ====
@@ -14,25 +14,42 @@
This generally requires NO changes to the network drivers of the classes
covered (e.g. ethernet).
-2/ If the module is to be virtualised, decide which attributes of the
- module shoudl be virtualised.
+2/ decide if your module is part of one of the major module groups.
+ These are V_GLOBAL V_NET V_PROCG V_CPU.
+
+ The reader will note that the descriptions below use the acronym VNET
+ a lot. The vimage system has been at this time broken into a number of
+ subsections. One of these is the "VNET" group. The idea of these
+ subsections is that they might be individually selected as
+ virtualizable in a particular virtual machine instance.
+
+ As an example, in a virtualization, one might to allocate a couple of
+ processors to it, but keep the saem filesystem and network setup, or
+ alternatively to share processors but to have virtualised networking.
+
+ The current code has a "vnet" pointer in the thread. It could be argued
+ that it should actually be a vimage.
+
+ [comments from Marko here]
+
+3/ If the module is to be virtualised, decide which attributes of the
+ module should be virtualised.
- For example, It may make sense that ther ebe a single central pool
+ For example, It may make sense that there be a single central pool
of "struct foo" and a single uma zone for them to come from, with a single
- lock guarding it. it might also make sense if the "foo_debug" sysctl
+ lock guarding it. It might also make sense if the "foo_debug" sysctl
controls all the instances at once, while on the other hand, the
"foo_mode" sysctl might make better sense if it were controllable
on a virtual system by virtual system basis.
-3/ Work out what global variables and structures are to be virtualised to
+4/ Work out what global variables and structures are to be virtualised to
achieve the behaviour required for part #2.
-
-4/ Work out for all the code paths through the module, how the path entering
+5/ Work out for all the code paths through the module, how the path entering
the module can divine which virtual machine it is on.
Some examples:
- * Since interfaces are all assighed to one virtual machine or
+ * Since interfaces are all assigned to one virtual machine or
another, an incoming packet has a pointer to the receive interface,
which in turn has a pointer to the virtual machine instance.
* Similarly, on any request from outside the kernel, (direct or indirect)
@@ -51,13 +68,12 @@
required for the module to stash away the virtual machine instance
somewhere, and make associated changes in the code.
-5/ Add the code described below to the files that make up the module
-
+6/ Add the code described below to the files that make up the module
-
Details:
(temp. for module FOO add a definition for VNET_MOD_FOO in sys/vimage.h)
+For now these instructions refer mainly to VNET and not VCPU etc.
Symbols defined in other modules that have been virtualised will have been
moved to a module-specific virtualisation structure. It will be defined in a
More information about the p4-projects
mailing list