libvirt 的 api virDomainGetVcpus 中的参数 cpumaps 和 maplen 是什么
what is the argument cpumaps and maplen in api virDomainGetVcpus of libvirt
我正在尝试在我的机器上获取 vcpus 运行 的信息,同样我正在使用 libvirt。
我无法理解如何使用具有参数 cpumaps 和 maplen 的 api virDomainGetVcpus。
我用的是C。
如果您有一些见解,请告诉我。
谢谢。
您需要使用virDomainGetInfo 和virNodeGetInfo 来guest guest CPU 数量和host CPU 数量。然后你可以分配一个合适大小的地图。这段代码可以解决问题:
virNodeInfo nodeinfo;
virDomainInfo dominfo;
int nhostcpus;
if (virNodeGetInfo(conn, &nodeinfo) < 0)
return -1;
nhostcpus = VIR_NODEINFO_MAXCPUS(nodeinfo);
if (virDomainGetInfo(dom, &dominfo) != 0)
return -1;
cpuinfo = malloc(sizeof(virVcpuInfo)*dominfo.nrVirtCpu);
cpumaplen = VIR_CPU_MAPLEN(nhostcpu);
cpumaps = vshMalloc(ctl, dominfo.nrVirtCpu * cpumaplen);
if ((ncpus = virDomainGetVcpus(dom,
cpuinfo, dominfo.nrVirtCpu,
cpumaps, cpumaplen)) < 0)
return -1;
我正在尝试在我的机器上获取 vcpus 运行 的信息,同样我正在使用 libvirt。 我无法理解如何使用具有参数 cpumaps 和 maplen 的 api virDomainGetVcpus。
我用的是C。 如果您有一些见解,请告诉我。
谢谢。
您需要使用virDomainGetInfo 和virNodeGetInfo 来guest guest CPU 数量和host CPU 数量。然后你可以分配一个合适大小的地图。这段代码可以解决问题:
virNodeInfo nodeinfo;
virDomainInfo dominfo;
int nhostcpus;
if (virNodeGetInfo(conn, &nodeinfo) < 0)
return -1;
nhostcpus = VIR_NODEINFO_MAXCPUS(nodeinfo);
if (virDomainGetInfo(dom, &dominfo) != 0)
return -1;
cpuinfo = malloc(sizeof(virVcpuInfo)*dominfo.nrVirtCpu);
cpumaplen = VIR_CPU_MAPLEN(nhostcpu);
cpumaps = vshMalloc(ctl, dominfo.nrVirtCpu * cpumaplen);
if ((ncpus = virDomainGetVcpus(dom,
cpuinfo, dominfo.nrVirtCpu,
cpumaps, cpumaplen)) < 0)
return -1;