mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-09-18 05:31:14 +00:00
qemu: Refactor qemuDomainHelperGetVcpus by reusing virBitmapToDataBuf
Get rid of the unnecessary allocation and copying of the bitmap and clean up some unnecesary temporary variables.
This commit is contained in:
parent
f79bfd9b51
commit
9f8196ace2
@ -1416,7 +1416,7 @@ static int
|
|||||||
qemuDomainHelperGetVcpus(virDomainObjPtr vm, virVcpuInfoPtr info, int maxinfo,
|
qemuDomainHelperGetVcpus(virDomainObjPtr vm, virVcpuInfoPtr info, int maxinfo,
|
||||||
unsigned char *cpumaps, int maplen)
|
unsigned char *cpumaps, int maplen)
|
||||||
{
|
{
|
||||||
int maxcpu, hostcpus;
|
int hostcpus;
|
||||||
size_t i, v;
|
size_t i, v;
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
|
|
||||||
@ -1429,10 +1429,6 @@ qemuDomainHelperGetVcpus(virDomainObjPtr vm, virVcpuInfoPtr info, int maxinfo,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
maxcpu = maplen * 8;
|
|
||||||
if (maxcpu > hostcpus)
|
|
||||||
maxcpu = hostcpus;
|
|
||||||
|
|
||||||
/* Clamp to actual number of vcpus */
|
/* Clamp to actual number of vcpus */
|
||||||
if (maxinfo > priv->nvcpupids)
|
if (maxinfo > priv->nvcpupids)
|
||||||
maxinfo = priv->nvcpupids;
|
maxinfo = priv->nvcpupids;
|
||||||
@ -1457,25 +1453,15 @@ qemuDomainHelperGetVcpus(virDomainObjPtr vm, virVcpuInfoPtr info, int maxinfo,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cpumaps != NULL) {
|
if (cpumaps != NULL) {
|
||||||
memset(cpumaps, 0, maplen * maxinfo);
|
|
||||||
for (v = 0; v < maxinfo; v++) {
|
for (v = 0; v < maxinfo; v++) {
|
||||||
unsigned char *cpumap = VIR_GET_CPUMAP(cpumaps, maplen, v);
|
unsigned char *cpumap = VIR_GET_CPUMAP(cpumaps, maplen, v);
|
||||||
virBitmapPtr map = NULL;
|
virBitmapPtr map = NULL;
|
||||||
unsigned char *tmpmap = NULL;
|
|
||||||
int tmpmapLen = 0;
|
|
||||||
|
|
||||||
if (virProcessGetAffinity(priv->vcpupids[v],
|
if (virProcessGetAffinity(priv->vcpupids[v],
|
||||||
&map, maxcpu) < 0)
|
&map, hostcpus) < 0)
|
||||||
return -1;
|
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);
|
virBitmapFree(map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user