}
+static virDomainVcpuDefPtr
+virDomainVcpuDefNew(void)
+{
+ virDomainVcpuDefPtr ret;
+
+ ignore_value(VIR_ALLOC(ret));
+
+ return ret;
+}
+
+
static void
-virDomainVcpuDefClear(virDomainVcpuDefPtr info)
+virDomainVcpuDefFree(virDomainVcpuDefPtr info)
{
if (!info)
return;
virBitmapFree(info->cpumask);
info->cpumask = NULL;
+ VIR_FREE(info);
}
virDomainDefSetVcpusMax(virDomainDefPtr def,
unsigned int maxvcpus)
{
+ size_t oldmax = def->maxvcpus;
size_t i;
if (def->maxvcpus == maxvcpus)
if (def->maxvcpus < maxvcpus) {
if (VIR_EXPAND_N(def->vcpus, def->maxvcpus, maxvcpus - def->maxvcpus) < 0)
return -1;
+
+ for (i = oldmax; i < def->maxvcpus; i++) {
+ if (!(def->vcpus[i] = virDomainVcpuDefNew()))
+ return -1;
+ }
} else {
for (i = maxvcpus; i < def->maxvcpus; i++)
- virDomainVcpuDefClear(&def->vcpus[i]);
+ virDomainVcpuDefFree(def->vcpus[i]);
VIR_SHRINK_N(def->vcpus, def->maxvcpus, def->maxvcpus - maxvcpus);
}
size_t i;
for (i = 0; i < def->maxvcpus; i++) {
- if (!def->vcpus[i].online)
+ if (!def->vcpus[i]->online)
return true;
}
}
for (i = 0; i < vcpus; i++)
- def->vcpus[i].online = true;
+ def->vcpus[i]->online = true;
for (i = vcpus; i < def->maxvcpus; i++)
- def->vcpus[i].online = false;
+ def->vcpus[i]->online = false;
return 0;
}
unsigned int ret = 0;
for (i = 0; i < def->maxvcpus; i++) {
- if (def->vcpus[i].online)
+ if (def->vcpus[i]->online)
ret++;
}
return NULL;
for (i = 0; i < def->maxvcpus; i++) {
- if (def->vcpus[i].online)
+ if (def->vcpus[i]->online)
ignore_value(virBitmapSetBit(ret, i));
}
if (vcpu >= def->maxvcpus)
return NULL;
- return &def->vcpus[vcpu];
+ return def->vcpus[vcpu];
}
size_t i;
for (i = 0; i < def->maxvcpus; i++) {
- if (def->vcpus[i].cpumask)
+ if (def->vcpus[i]->cpumask)
return true;
}
virDomainResourceDefFree(def->resource);
for (i = 0; i < def->maxvcpus; i++)
- virDomainVcpuDefClear(&def->vcpus[i]);
+ virDomainVcpuDefFree(def->vcpus[i]);
VIR_FREE(def->vcpus);
/* hostdevs must be freed before nets (or any future "intelligent
}
for (i = 0; i < src->maxvcpus; i++) {
- virDomainVcpuDefPtr svcpu = &src->vcpus[i];
- virDomainVcpuDefPtr dvcpu = &dst->vcpus[i];
+ virDomainVcpuDefPtr svcpu = src->vcpus[i];
+ virDomainVcpuDefPtr dvcpu = dst->vcpus[i];
if (svcpu->online != dvcpu->online) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
for (i = 0; i < def->maxvcpus; i++) {
char *cpumask;
- virDomainVcpuDefPtr vcpu = def->vcpus + i;
+ virDomainVcpuDefPtr vcpu = def->vcpus[i];
if (!vcpu->cpumask)
continue;