[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] tools: convert cpumap bitmap to list
This patch modifies the lowlevel xc vcpuinfo call to convert a vcpu's cpumap to a list of int. XendDomainInfo.py filters the cpumap into a smaller list that is bound by the number of vcpus allocated to a domain. -- Ryan Harper Software Engineer; Linux Technology Center IBM Corp., Austin, Tx (512) 838-9253 T/L: 678-9253 ryanh@xxxxxxxxxx diffstat output: lowlevel/xc/xc.c | 21 +++++++++++++++------ xend/XendDomainInfo.py | 6 +++++- xm/main.py | 4 ++-- 3 files changed, 22 insertions(+), 9 deletions(-) Signed-off-by: Ryan Harper <ryanh@xxxxxxxxxx> --- diff -r 7c951e3eb5ab tools/python/xen/lowlevel/xc/xc.c --- a/tools/python/xen/lowlevel/xc/xc.c Wed Oct 19 10:53:00 2005 +++ b/tools/python/xen/lowlevel/xc/xc.c Wed Oct 19 17:35:34 2005 @@ -347,11 +347,11 @@ PyObject *kwds) { XcObject *xc = (XcObject *)self; - PyObject *info_dict; + PyObject *info_dict, *cpumap; uint32_t dom, vcpu = 0; xc_vcpuinfo_t info; - int rc; + int rc, i; static char *kwd_list[] = { "dom", "vcpu", NULL }; @@ -363,14 +363,23 @@ if ( rc < 0 ) return PyErr_SetFromErrno(xc_error); - info_dict = Py_BuildValue("{s:i,s:i,s:i,s:L,s:i,s:i}", + info_dict = Py_BuildValue("{s:i,s:i,s:i,s:L,s:i}", "online", info.online, "blocked", info.blocked, "running", info.running, "cpu_time", info.cpu_time, - "cpu", info.cpu, - "cpumap", info.cpumap); - + "cpu", info.cpu); + /* XXX: we should truncate this list by max_vcpu_id+1 instead + * of calculating # of bits in cpumap_t. */ + cpumap = PyList_New(sizeof(cpumap_t)*8); + for ( i = 0; i < sizeof(cpumap_t)*8; i++ ) { + if ( (1 << i) & info.cpumap ) + PyList_SetItem(cpumap, i, PyInt_FromLong(i)); + else + PyList_SetItem(cpumap, i, PyInt_FromLong(-1)); + } + + PyDict_SetItemString(info_dict, "cpumap", cpumap); return info_dict; } diff -r 7c951e3eb5ab tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Wed Oct 19 10:53:00 2005 +++ b/tools/python/xen/xend/XendDomainInfo.py Wed Oct 19 17:35:34 2005 @@ -982,6 +982,9 @@ def getVCPUInfo(self): try: + def filter_cpumap(map, max): + return filter(lambda x: x >= 0, map[0:max]) + # We include the domain name and ID, to help xm. sxpr = ['domain', ['domid', self.domid], @@ -998,7 +1001,8 @@ ['running', info['running']], ['cpu_time', info['cpu_time'] / 1e9], ['cpu', info['cpu']], - ['cpumap', info['cpumap']]]) + ['cpumap', filter_cpumap(info['cpumap'], + self.info['vcpus'])]]) return sxpr diff -r 7c951e3eb5ab tools/python/xen/xm/main.py --- a/tools/python/xen/xm/main.py Wed Oct 19 10:53:00 2005 +++ b/tools/python/xen/xm/main.py Wed Oct 19 17:35:34 2005 @@ -299,7 +299,7 @@ number = vinfo('number', int) cpu = vinfo('cpu', int) - cpumap = vinfo('cpumap', int) + cpumap = vinfo('cpumap', list) online = vinfo('online', int) cpu_time = vinfo('cpu_time', float) running = vinfo('running', int) @@ -321,7 +321,7 @@ s = "--p" print ( - "%(name)-32s %(domid)3d %(number)4d %(c)3s %(s)-3s %(cpu_time)7.1f 0x%(cpumap)x" % + "%(name)-32s %(domid)3d %(number)4d %(c)3s %(s)-3s %(cpu_time)7.1f %(cpumap)s" % locals()) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |