Clean up xc_vmx_build():

1. Remove linux parameters.
 2. Remove init ramdisk.
 3. Remove e820 memmap config file parse.
 4. Removed provisional GDT.
 5. Removed some ugly tailing space.

Signed-off-by: Xin B Li <xin.b.li@intel.com>
This commit is contained in:
kaf24@firebug.cl.cam.ac.uk committed 2005-09-23 12:52:43 +01:00
1 parent 01668ad066
commit 2b3f9eda6b
14 files changed
+317 -757

No files matched your search

+7 -64
View File
@@ -17,7 +17,6 @@
#include <arpa/inet.h>
#include "xc_private.h"
#include "linux_boot_params.h"
/* Needed for Python versions earlier than 2.3. */
#ifndef PyMODINIT_FUNC
@@ -310,80 +309,24 @@ static PyObject *pyxc_vmx_build(PyObject *self,
XcObject *xc = (XcObject *)self;
u32 dom;
char *image, *ramdisk = NULL, *cmdline = "";
PyObject *memmap;
char *image;
int control_evtchn, store_evtchn;
int flags = 0, vcpus = 1;
int numItems, i;
int memsize;
struct mem_map mem_map;
unsigned long store_mfn = 0;
static char *kwd_list[] = { "dom", "control_evtchn", "store_evtchn",
"memsize", "image", "memmap",
"ramdisk", "cmdline", "flags",
"vcpus", NULL };
"memsize", "image", "flags", "vcpus", NULL };
if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiiisO!|ssii", kwd_list,
if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiiisii", kwd_list,
&dom, &control_evtchn, &store_evtchn,
&memsize,
&image, &PyList_Type, &memmap,
&ramdisk, &cmdline, &flags, &vcpus) )
&memsize, &image, &flags, &vcpus) )
return NULL;
memset(&mem_map, 0, sizeof(mem_map));
/* Parse memmap */
/* get the number of lines passed to us */
numItems = PyList_Size(memmap) - 1; /* removing the line
containing "memmap" */
mem_map.nr_map = numItems;
/* should raise an error here. */
if (numItems < 0) return NULL; /* Not a list */
/* iterate over items of the list, grabbing ranges and parsing them */
for (i = 1; i <= numItems; i++) { // skip over "memmap"
PyObject *item, *f1, *f2, *f3, *f4;
int numFields;
unsigned long lf1, lf2, lf3, lf4;
char *sf1, *sf2;
/* grab the string object from the next element of the list */
item = PyList_GetItem(memmap, i); /* Can't fail */
/* get the number of lines passed to us */
numFields = PyList_Size(item);
if (numFields != 4)
return NULL;
f1 = PyList_GetItem(item, 0);
f2 = PyList_GetItem(item, 1);
f3 = PyList_GetItem(item, 2);
f4 = PyList_GetItem(item, 3);
/* Convert objects to strings/longs */
sf1 = PyString_AsString(f1);
sf2 = PyString_AsString(f2);
lf3 = PyLong_AsLong(f3);
lf4 = PyLong_AsLong(f4);
if ( sscanf(sf1, "%lx", &lf1) != 1 )
return NULL;
if ( sscanf(sf2, "%lx", &lf2) != 1 )
return NULL;
mem_map.map[i-1].addr = lf1;
mem_map.map[i-1].size = lf2 - lf1;
mem_map.map[i-1].type = lf3;
mem_map.map[i-1].caching_attr = lf4;
}
if ( xc_vmx_build(xc->xc_handle, dom, memsize, image, &mem_map,
ramdisk, cmdline, control_evtchn, flags,
vcpus, store_evtchn, &store_mfn) != 0 )
if ( xc_vmx_build(xc->xc_handle, dom, memsize, image, control_evtchn,
flags, vcpus, store_evtchn, &store_mfn) != 0 )
return PyErr_SetFromErrno(xc_error);
return Py_BuildValue("{s:i}", "store_mfn", store_mfn);
}
-41
View File
@@ -1,41 +0,0 @@
mem_caching_attr = {
'UC' : 0,
'WC' : 1,
'WT' : 4,
'WP' : 5,
'WB' : 6,
};
e820_mem_type = {
'AddressRangeMemory' : 1,
'AddressRangeReserved' : 2,
'AddressRangeACPI' : 3,
'AddressRangeNVS' : 4,
'AddressRangeIO' : 16,
'AddressRangeShared' : 17,
};
MT_COL = 2
MA_COL = 3
def strmap(row):
if (type(row) != type([])):
return row
row[MT_COL] = e820_mem_type[row[MT_COL]]
row[MA_COL] = mem_caching_attr[row[MA_COL]]
return row
def memmap_parse(memmap):
return map(strmap, memmap)
if __name__ == '__main__':
memmap = [ 'memmap',
[ '1', '2', 'AddressRangeMemory', 'UC'],
[ '1', '2', 'AddressRangeReserved', 'UC'],
[ '1', '2', 'AddressRangeACPI', 'WB'],
[ '1', '2', 'AddressRangeNVS', 'WB'],
[ '1', '2', 'AddressRangeIO', 'WB'],
[ '1', '2', 'AddressRangeShared', 'WB']]
print memmap_parse(memmap);
+3 -20
View File
@@ -238,22 +238,19 @@ class VmxImageHandler(ImageHandler):
def configure(self, imageConfig, deviceConfig):
ImageHandler.configure(self, imageConfig, deviceConfig)
self.memmap = sxp.child_value(imageConfig, 'memmap')
self.dmargs = self.parseDeviceModelArgs(imageConfig, deviceConfig)
self.device_model = sxp.child_value(imageConfig, 'device_model')
if not self.device_model:
raise VmError("vmx: missing device model")
self.display = sxp.child_value(imageConfig, 'display')
self.vm.storeVm(("image/memmap", self.memmap),
("image/dmargs", " ".join(self.dmargs)),
self.vm.storeVm(("image/dmargs", " ".join(self.dmargs)),
("image/device-model", self.device_model),
("image/display", self.display))
self.device_channel = None
self.pid = 0
self.memmap_value = []
self.dmargs += self.configVNC(imageConfig)
@@ -261,7 +258,6 @@ class VmxImageHandler(ImageHandler):
def createImage(self):
"""Create a VM for the VMX environment.
"""
self.parseMemmap()
self.createDomain()
def buildDomain(self):
@@ -278,9 +274,6 @@ class VmxImageHandler(ImageHandler):
log.debug("control_evtchn = %d", self.device_channel.port2)
log.debug("store_evtchn = %d", store_evtchn)
log.debug("memsize = %d", self.vm.getMemoryTarget() / 1024)
log.debug("memmap = %s", self.memmap_value)
log.debug("cmdline = %s", self.cmdline)
log.debug("ramdisk = %s", self.ramdisk)
log.debug("flags = %d", self.flags)
log.debug("vcpus = %d", self.vm.getVCpuCount())
@@ -289,9 +282,6 @@ class VmxImageHandler(ImageHandler):
control_evtchn = self.device_channel.port2,
store_evtchn = store_evtchn,
memsize = self.vm.getMemoryTarget() / 1024,
memmap = self.memmap_value,
cmdline = self.cmdline,
ramdisk = self.ramdisk,
flags = self.flags,
vcpus = self.vm.getVCpuCount())
if isinstance(ret, dict):
@@ -299,18 +289,11 @@ class VmxImageHandler(ImageHandler):
return 0
return ret
def parseMemmap(self):
if self.memmap is None:
return
memmap = sxp.parse(open(self.memmap))[0]
from xen.util.memmap import memmap_parse
self.memmap_value = memmap_parse(memmap)
# Return a list of cmd line args to the device models based on the
# xm config file
def parseDeviceModelArgs(self, imageConfig, deviceConfig):
dmargs = [ 'cdrom', 'boot', 'fda', 'fdb',
'localtime', 'serial', 'stdvga', 'isa', 'vcpus' ]
'localtime', 'serial', 'stdvga', 'isa', 'vcpus' ]
ret = []
for a in dmargs:
v = sxp.child_value(imageConfig, a)
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.