提交 9f8196ac 编写于 作者: P Peter Krempa

qemu: Refactor qemuDomainHelperGetVcpus by reusing virBitmapToDataBuf

Get rid of the unnecessary allocation and copying of the bitmap and
clean up some unnecesary temporary variables.
上级 f79bfd9b
......@@ -1416,7 +1416,7 @@ static int
qemuDomainHelperGetVcpus(virDomainObjPtr vm, virVcpuInfoPtr info, int maxinfo,
unsigned char *cpumaps, int maplen)
{
int maxcpu, hostcpus;
int hostcpus;
size_t i, v;
qemuDomainObjPrivatePtr priv = vm->privateData;
......@@ -1429,10 +1429,6 @@ qemuDomainHelperGetVcpus(virDomainObjPtr vm, virVcpuInfoPtr info, int maxinfo,
return -1;
}
maxcpu = maplen * 8;
if (maxcpu > hostcpus)
maxcpu = hostcpus;
/* Clamp to actual number of vcpus */
if (maxinfo > priv->nvcpupids)
maxinfo = priv->nvcpupids;
......@@ -1457,25 +1453,15 @@ qemuDomainHelperGetVcpus(virDomainObjPtr vm, virVcpuInfoPtr info, int maxinfo,
}
if (cpumaps != NULL) {
memset(cpumaps, 0, maplen * maxinfo);
for (v = 0; v < maxinfo; v++) {
unsigned char *cpumap = VIR_GET_CPUMAP(cpumaps, maplen, v);
virBitmapPtr map = NULL;
unsigned char *tmpmap = NULL;
int tmpmapLen = 0;
if (virProcessGetAffinity(priv->vcpupids[v],
&map, maxcpu) < 0)
&map, hostcpus) < 0)
return -1;
if (virBitmapToData(map, &tmpmap, &tmpmapLen) < 0) {
virBitmapFree(map);
return -1;
}
if (tmpmapLen > maplen)
tmpmapLen = maplen;
memcpy(cpumap, tmpmap, tmpmapLen);
VIR_FREE(tmpmap);
virBitmapToDataBuf(map, cpumap, maplen);
virBitmapFree(map);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册