/* CPUs */
virCommandAddArg(cmd, "-c");
- virCommandAddArgFormat(cmd, "%d", def->vcpus);
+ virCommandAddArgFormat(cmd, "%d", virDomainDefGetVcpus(def));
/* Memory */
virCommandAddArg(cmd, "-m");
info->state = virDomainObjGetState(vm, NULL);
info->maxMem = virDomainDefGetMemoryActual(vm->def);
- info->nrVirtCpu = vm->def->vcpus;
+ info->nrVirtCpu = virDomainDefGetVcpus(vm->def);
ret = 0;
cleanup:
virDomainAuditMemory(vm, 0, virDomainDefGetMemoryActual(vm->def),
"start", true);
- virDomainAuditVcpu(vm, 0, vm->def->vcpus, "start", true);
+ virDomainAuditVcpu(vm, 0, virDomainDefGetVcpus(vm->def), "start", true);
if (vm->def->niothreadids)
virDomainAuditIOThread(vm, 0, vm->def->niothreadids, "start", true);
}
+unsigned int
+virDomainDefGetVcpus(const virDomainDef *def)
+{
+ return def->vcpus;
+}
+
+
virDomainDiskDefPtr
virDomainDiskDefNew(virDomainXMLOptionPtr xmlopt)
{
goto error;
}
- if (vcpupin->id >= def->vcpus) {
+ if (vcpupin->id >= virDomainDefGetVcpus(def)) {
/* To avoid the regression when daemon loading
* domain confs, we can't simply error out if
* <vcpupin> nodes greater than current vcpus,
* the policy specified explicitly as def->cpuset.
*/
if (def->cpumask) {
- if (VIR_REALLOC_N(def->cputune.vcpupin, def->vcpus) < 0)
+ if (VIR_REALLOC_N(def->cputune.vcpupin, virDomainDefGetVcpus(def)) < 0)
goto error;
- for (i = 0; i < def->vcpus; i++) {
+ for (i = 0; i < virDomainDefGetVcpus(def); i++) {
if (virDomainPinIsDuplicate(def->cputune.vcpupin,
def->cputune.nvcpupin,
i))
goto error;
}
- if (src->vcpus != dst->vcpus) {
+ if (virDomainDefGetVcpus(src) != virDomainDefGetVcpus(dst)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Target domain vCPU count %d does not match source %d"),
- dst->vcpus, src->vcpus);
+ virDomainDefGetVcpus(dst), virDomainDefGetVcpus(src));
goto error;
}
if (virDomainDefGetVcpusMax(src) != virDomainDefGetVcpusMax(dst)) {
VIR_FREE(cpumask);
}
if (virDomainDefHasVcpusOffline(def))
- virBufferAsprintf(buf, " current='%u'", def->vcpus);
+ virBufferAsprintf(buf, " current='%u'", virDomainDefGetVcpus(def));
virBufferAsprintf(buf, ">%u</vcpu>\n", virDomainDefGetVcpusMax(def));
if (def->niothreadids > 0) {
bool virDomainDefHasVcpusOffline(const virDomainDef *def);
unsigned int virDomainDefGetVcpusMax(const virDomainDef *def);
int virDomainDefSetVcpus(virDomainDefPtr def, unsigned int vcpus);
+unsigned int virDomainDefGetVcpus(const virDomainDef *def);
unsigned long long virDomainDefGetMemoryInitial(const virDomainDef *def);
void virDomainDefSetMemoryTotal(virDomainDefPtr def, unsigned long long size);
virDomainDefGetMemoryActual;
virDomainDefGetMemoryInitial;
virDomainDefGetSecurityLabelDef;
+virDomainDefGetVcpus;
virDomainDefGetVcpusMax;
virDomainDefHasDeviceAddress;
virDomainDefHasMemoryHotplug;
if (libxl_cpu_bitmap_alloc(ctx, &b_info->avail_vcpus, b_info->max_vcpus))
return -1;
libxl_bitmap_set_none(&b_info->avail_vcpus);
- for (i = 0; i < def->vcpus; i++)
+ for (i = 0; i < virDomainDefGetVcpus(def); i++)
libxl_bitmap_set((&b_info->avail_vcpus), i);
if (def->clock.ntimers > 0 &&
}
info->state = virDomainObjGetState(vm, NULL);
- info->nrVirtCpu = vm->def->vcpus;
+ info->nrVirtCpu = virDomainDefGetVcpus(vm->def);
ret = 0;
cleanup:
if (flags & VIR_DOMAIN_VCPU_MAXIMUM)
ret = virDomainDefGetVcpusMax(def);
else
- ret = def->vcpus;
+ ret = virDomainDefGetVcpus(def);
cleanup:
if (vm)
sa_assert(targetDef);
/* Clamp to actual number of vcpus */
- if (ncpumaps > targetDef->vcpus)
- ncpumaps = targetDef->vcpus;
+ if (ncpumaps > virDomainDefGetVcpus(targetDef))
+ ncpumaps = virDomainDefGetVcpus(targetDef);
if ((hostcpus = libxl_get_max_cpus(cfg->ctx)) < 0)
goto cleanup;
* either <vcpu> or <numatune> is 'auto'.
*/
if (virDomainDefNeedsPlacementAdvice(ctrl->def)) {
- nodeset = virNumaGetAutoPlacementAdvice(ctrl->def->vcpus,
+ nodeset = virNumaGetAutoPlacementAdvice(virDomainDefGetVcpus(ctrl->def),
ctrl->def->mem.cur_balloon);
if (!nodeset)
goto cleanup;
}
info->maxMem = virDomainDefGetMemoryActual(vm->def);
- info->nrVirtCpu = vm->def->vcpus;
+ info->nrVirtCpu = virDomainDefGetVcpus(vm->def);
ret = 0;
cleanup:
info->maxMem = virDomainDefGetMemoryActual(vm->def);
info->memory = vm->def->mem.cur_balloon;
- info->nrVirtCpu = vm->def->vcpus;
+ info->nrVirtCpu = virDomainDefGetVcpus(vm->def);
ret = 0;
cleanup:
if (system_type == HMC)
virBufferAsprintf(&buf, " -m %s", managed_system);
virBufferAsprintf(&buf, " -r lpar -p %s -i min_mem=%lld,desired_mem=%lld,"
- "max_mem=%lld,desired_procs=%d,virtual_scsi_adapters=%s",
+ "max_mem=%lld,desired_procs=%u,virtual_scsi_adapters=%s",
def->name, def->mem.cur_balloon,
def->mem.cur_balloon,
virDomainDefGetMemoryInitial(def),
- (int) def->vcpus, virDomainDiskGetSource(def->disks[0]));
+ virDomainDefGetVcpus(def),
+ virDomainDiskGetSource(def->disks[0]));
ret = phypExecBuffer(session, &buf, &exit_status, conn, false);
if (exit_status < 0) {
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
- virBufferAsprintf(&buf, "%u", def->vcpus);
+ virBufferAsprintf(&buf, "%u", virDomainDefGetVcpus(def));
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SMP_TOPOLOGY)) {
if (virDomainDefHasVcpusOffline(def))
}
}
- if (VIR_ASSIGN_IS_OVERFLOW(info->nrVirtCpu, vm->def->vcpus)) {
+ if (VIR_ASSIGN_IS_OVERFLOW(info->nrVirtCpu, virDomainDefGetVcpus(vm->def))) {
virReportError(VIR_ERR_OVERFLOW, "%s", _("cpu count too large"));
goto cleanup;
}
size_t i;
int rc = 1;
int ret = -1;
- int oldvcpus = vm->def->vcpus;
+ int oldvcpus = virDomainDefGetVcpus(vm->def);
int vcpus = oldvcpus;
pid_t *cpupids = NULL;
int ncpupids;
if (!qemuDomainAgentAvailable(vm, true))
goto endjob;
- if (nvcpus > vm->def->vcpus) {
+ if (nvcpus > virDomainDefGetVcpus(vm->def)) {
virReportError(VIR_ERR_INVALID_ARG,
_("requested vcpu count is greater than the count "
"of enabled vcpus in the domain: %d > %d"),
- nvcpus, vm->def->vcpus);
+ nvcpus, virDomainDefGetVcpus(vm->def));
goto endjob;
}
if (persistentDef) {
/* remove vcpupin entries for vcpus that were unplugged */
- if (nvcpus < persistentDef->vcpus) {
- for (i = persistentDef->vcpus - 1; i >= nvcpus; i--)
+ if (nvcpus < virDomainDefGetVcpus(persistentDef)) {
+ for (i = virDomainDefGetVcpus(persistentDef) - 1; i >= nvcpus; i--)
virDomainPinDel(&persistentDef->cputune.vcpupin,
&persistentDef->cputune.nvcpupin,
i);
priv = vm->privateData;
- if (def && vcpu >= def->vcpus) {
+ if (def && vcpu >= virDomainDefGetVcpus(def)) {
virReportError(VIR_ERR_INVALID_ARG,
_("vcpu %d is out of range of live cpu count %d"),
- vcpu, def->vcpus);
+ vcpu, virDomainDefGetVcpus(def));
goto endjob;
}
- if (persistentDef && vcpu >= persistentDef->vcpus) {
+ if (persistentDef && vcpu >= virDomainDefGetVcpus(persistentDef)) {
virReportError(VIR_ERR_INVALID_ARG,
_("vcpu %d is out of range of persistent cpu count %d"),
- vcpu, persistentDef->vcpus);
+ vcpu, virDomainDefGetVcpus(persistentDef));
goto endjob;
}
priv = vm->privateData;
/* Clamp to actual number of vcpus */
- if (ncpumaps > def->vcpus)
- ncpumaps = def->vcpus;
+ if (ncpumaps > virDomainDefGetVcpus(def))
+ ncpumaps = virDomainDefGetVcpus(def);
if (ncpumaps < 1)
goto cleanup;
if (flags & VIR_DOMAIN_VCPU_MAXIMUM)
ret = virDomainDefGetVcpusMax(def);
else
- ret = def->vcpus;
+ ret = virDomainDefGetVcpus(def);
}
goto cleanup;
if (*quota > 0)
- *quota /= vm->def->vcpus;
+ *quota /= virDomainDefGetVcpus(vm->def);
goto out;
}
&record->nparams,
maxparams,
"vcpu.current",
- (unsigned) dom->def->vcpus) < 0)
+ virDomainDefGetVcpus(dom->def)) < 0)
return -1;
if (virTypedParamsAddUInt(&record->params,
virDomainDefGetVcpusMax(dom->def)) < 0)
return -1;
- if (VIR_ALLOC_N(cpuinfo, dom->def->vcpus) < 0)
+ if (VIR_ALLOC_N(cpuinfo, virDomainDefGetVcpus(dom->def)) < 0)
return -1;
- if (qemuDomainHelperGetVcpus(dom, cpuinfo, dom->def->vcpus,
+ if (qemuDomainHelperGetVcpus(dom, cpuinfo, virDomainDefGetVcpus(dom->def),
NULL, 0) < 0) {
virResetLastError();
ret = 0; /* it's ok to be silent and go ahead */
goto cleanup;
}
- for (i = 0; i < dom->def->vcpus; i++) {
+ for (i = 0; i < virDomainDefGetVcpus(dom->def); i++) {
snprintf(param_name, VIR_TYPED_PARAM_FIELD_LENGTH,
"vcpu.%zu.state", i);
if (virTypedParamsAddInt(&record->params,
return 0;
}
- if (ncpupids != vm->def->vcpus) {
+ if (ncpupids != virDomainDefGetVcpus(vm->def)) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("got wrong number of vCPU pids from QEMU monitor. "
"got %d, wanted %d"),
- ncpupids, vm->def->vcpus);
+ ncpupids, virDomainDefGetVcpus(vm->def));
VIR_FREE(cpupids);
return -1;
}
int n;
int ret = -1;
VIR_DEBUG("Setting affinity on CPUs nvcpupin=%zu nvcpus=%d nvcpupids=%d",
- def->cputune.nvcpupin, def->vcpus, priv->nvcpupids);
+ def->cputune.nvcpupin, virDomainDefGetVcpus(def), priv->nvcpupids);
if (!def->cputune.nvcpupin)
return 0;
return 0;
}
- for (n = 0; n < def->vcpus; n++) {
+ for (n = 0; n < virDomainDefGetVcpus(def); n++) {
/* set affinity only for existing vcpus */
if (!(pininfo = virDomainPinFind(def->cputune.vcpupin,
def->cputune.nvcpupin,
* either <vcpu> or <numatune> is 'auto'.
*/
if (virDomainDefNeedsPlacementAdvice(vm->def)) {
- nodeset = virNumaGetAutoPlacementAdvice(vm->def->vcpus,
+ nodeset = virNumaGetAutoPlacementAdvice(virDomainDefGetVcpus(vm->def),
virDomainDefGetMemoryActual(vm->def));
if (!nodeset)
goto cleanup;
info->state = virDomainObjGetState(privdom, NULL);
info->memory = privdom->def->mem.cur_balloon;
info->maxMem = virDomainDefGetMemoryActual(privdom->def);
- info->nrVirtCpu = privdom->def->vcpus;
+ info->nrVirtCpu = virDomainDefGetVcpus(privdom->def);
info->cpuTime = ((tv.tv_sec * 1000ll * 1000ll * 1000ll) + (tv.tv_usec * 1000ll));
ret = 0;
if (flags & VIR_DOMAIN_VCPU_MAXIMUM)
ret = virDomainDefGetVcpusMax(def);
else
- ret = def->vcpus;
+ ret = virDomainDefGetVcpus(def);
cleanup:
virDomainObjEndAPI(&vm);
virBitmapSetAll(allcpumap);
/* Clamp to actual number of vcpus */
- if (maxinfo > privdom->def->vcpus)
- maxinfo = privdom->def->vcpus;
+ if (maxinfo > virDomainDefGetVcpus(privdom->def))
+ maxinfo = virDomainDefGetVcpus(privdom->def);
memset(info, 0, sizeof(*info) * maxinfo);
memset(cpumaps, 0, maxinfo * maplen);
goto cleanup;
}
- if (vcpu > privdom->def->vcpus) {
+ if (vcpu > virDomainDefGetVcpus(privdom->def)) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("requested vcpu is higher than allocated vcpus"));
goto cleanup;
virBitmapSetAll(allcpumap);
/* Clamp to actual number of vcpus */
- if (ncpumaps > def->vcpus)
- ncpumaps = def->vcpus;
+ if (ncpumaps > virDomainDefGetVcpus(def))
+ ncpumaps = virDomainDefGetVcpus(def);
for (vcpu = 0; vcpu < ncpumaps; vcpu++) {
virDomainPinDefPtr pininfo;
info->maxMem = virDomainDefGetMemoryActual(vm->def);
info->memory = vm->def->mem.cur_balloon;
- info->nrVirtCpu = vm->def->vcpus;
+ info->nrVirtCpu = virDomainDefGetVcpus(vm->def);
ret = 0;
cleanup:
info->cpuTime = 0;
info->maxMem = virDomainDefGetMemoryActual(vm->def);
info->memory = vm->def->mem.cur_balloon;
- info->nrVirtCpu = vm->def->vcpus;
+ info->nrVirtCpu = virDomainDefGetVcpus(vm->def);
ret = 0;
cleanup:
}
if (sched_cpu_shares != NULL) {
+ unsigned int vcpus = virDomainDefGetVcpus(def);
/* See http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.SharesInfo.Level.html */
if (STRCASEEQ(sched_cpu_shares, "low")) {
- def->cputune.shares = def->vcpus * 500;
+ def->cputune.shares = vcpus * 500;
} else if (STRCASEEQ(sched_cpu_shares, "normal")) {
- def->cputune.shares = def->vcpus * 1000;
+ def->cputune.shares = vcpus * 1000;
} else if (STRCASEEQ(sched_cpu_shares, "high")) {
- def->cputune.shares = def->vcpus * 2000;
+ def->cputune.shares = vcpus * 2000;
} else if (virStrToLong_ul(sched_cpu_shares, NULL, 10,
&def->cputune.shares) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
/* def:cputune.shares -> vmx:sched.cpu.shares */
if (def->cputune.sharesSpecified) {
+ unsigned int vcpus = virDomainDefGetVcpus(def);
/* See http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.SharesInfo.Level.html */
- if (def->cputune.shares == def->vcpus * 500) {
+ if (def->cputune.shares == vcpus * 500) {
virBufferAddLit(&buffer, "sched.cpu.shares = \"low\"\n");
- } else if (def->cputune.shares == def->vcpus * 1000) {
+ } else if (def->cputune.shares == vcpus * 1000) {
virBufferAddLit(&buffer, "sched.cpu.shares = \"normal\"\n");
- } else if (def->cputune.shares == def->vcpus * 2000) {
+ } else if (def->cputune.shares == vcpus * 2000) {
virBufferAddLit(&buffer, "sched.cpu.shares = \"high\"\n");
} else {
virBufferAsprintf(&buffer, "sched.cpu.shares = \"%lu\"\n",
info->state = virDomainObjGetState(privdom, NULL);
info->memory = privdom->def->mem.cur_balloon;
info->maxMem = virDomainDefGetMemoryActual(privdom->def);
- info->nrVirtCpu = privdom->def->vcpus;
+ info->nrVirtCpu = virDomainDefGetVcpus(privdom->def);
info->cpuTime = 0;
if (virDomainObjIsActive(privdom)) {
unsigned long long vtime;
size_t i;
- for (i = 0; i < privdom->def->vcpus; ++i) {
+ for (i = 0; i < virDomainDefGetVcpus(privdom->def); ++i) {
if (prlsdkGetVcpuStats(privdom, i, &vtime) < 0) {
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
_("cannot read cputime for domain"));
if (flags & VIR_DOMAIN_VCPU_MAXIMUM)
ret = virDomainDefGetVcpusMax(privdom->def);
else
- ret = privdom->def->vcpus;
+ ret = virDomainDefGetVcpus(privdom->def);
cleanup:
if (privdom)
}
if (def->cputune.vcpupin) {
- for (i = 0; i < def->vcpus; i++) {
+ for (i = 0; i < virDomainDefGetVcpus(def); i++) {
if (!virBitmapEqual(def->cpumask,
def->cputune.vcpupin[i]->cpumask)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
pret = PrlVmCfg_SetRamSize(sdkdom, virDomainDefGetMemoryActual(def) >> 10);
prlsdkCheckRetGoto(pret, error);
- pret = PrlVmCfg_SetCpuCount(sdkdom, def->vcpus);
+ pret = PrlVmCfg_SetCpuCount(sdkdom, virDomainDefGetVcpus(def));
prlsdkCheckRetGoto(pret, error);
if (!(mask = virBitmapFormat(def->cpumask)))
memset(info, 0, sizeof(virDomainInfo));
info->maxMem = virDomainDefGetMemoryActual(entry->def);
info->memory = entry->def->mem.cur_balloon;
- info->nrVirtCpu = entry->def->vcpus;
+ info->nrVirtCpu = virDomainDefGetVcpus(entry->def);
info->state = VIR_DOMAIN_SHUTOFF;
info->cpuTime = 0;
if (flags & VIR_DOMAIN_VCPU_MAXIMUM)
ret = virDomainDefGetVcpusMax(entry->def);
else
- ret = entry->def->vcpus;
+ ret = virDomainDefGetVcpus(entry->def);
cleanup:
xenUnifiedUnlock(priv);
if (virDomainDefGetVcpusMax(def) > 0) {
(*record)->vcpus_max = (int64_t) virDomainDefGetVcpusMax(def);
- (*record)->vcpus_at_startup = (int64_t) def->vcpus;
+ (*record)->vcpus_at_startup = (int64_t) virDomainDefGetVcpus(def);
}
if (def->onPoweroff)
(*record)->actions_after_shutdown = actionShutdownLibvirt2XenapiEnum(def->onPoweroff);
/* Computing the vcpu_avail bitmask works because MAX_VIRT_CPUS is
either 32, or 64 on a platform where long is big enough. */
if (virDomainDefHasVcpusOffline(def) &&
- xenConfigSetInt(conf, "vcpu_avail", (1UL << def->vcpus) - 1) < 0)
+ xenConfigSetInt(conf, "vcpu_avail",
+ (1UL << virDomainDefGetVcpus(def)) - 1) < 0)
goto cleanup;
if ((def->cpumask != NULL) &&
/* Computing the vcpu_avail bitmask works because MAX_VIRT_CPUS is
either 32, or 64 on a platform where long is big enough. */
if (virDomainDefHasVcpusOffline(def))
- virBufferAsprintf(&buf, "(vcpu_avail %lu)", (1UL << def->vcpus) - 1);
+ virBufferAsprintf(&buf, "(vcpu_avail %lu)",
+ (1UL << virDomainDefGetVcpus(def)) - 1);
if (def->cpumask) {
char *ranges = virBitmapFormat(def->cpumask);
virBufferAsprintf(&buf, "(vcpus %u)", virDomainDefGetVcpusMax(def));
if (virDomainDefHasVcpusOffline(def))
virBufferAsprintf(&buf, "(vcpu_avail %lu)",
- (1UL << def->vcpus) - 1);
+ (1UL << virDomainDefGetVcpus(def)) - 1);
for (i = 0; i < def->os.nBootDevs; i++) {
switch (def->os.bootDevs[i]) {