virCgroupNewDetect;
virCgroupNewDetectMachine;
virCgroupNewDomainPartition;
-virCgroupNewEmulator;
virCgroupNewIgnoreError;
-virCgroupNewIOThread;
virCgroupNewMachine;
virCgroupNewPartition;
virCgroupNewSelf;
virCgroupNewThread;
-virCgroupNewVcpu;
virCgroupPathOfController;
virCgroupRemove;
virCgroupRemoveRecursively;
goto cleanup;
if (mem_mask)
- if (virCgroupNewEmulator(priv->cgroup, false, &cgroup_temp) < 0 ||
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_EMULATOR, 0,
+ false, &cgroup_temp) < 0 ||
virCgroupSetCpusetMems(cgroup_temp, mem_mask) < 0)
goto cleanup;
goto error;
for (i = 0; i < priv->nvcpupids; i++) {
- if (virCgroupNewVcpu(priv->cgroup, i, false, &cgroup_temp) < 0 ||
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_VCPU, i,
+ false, &cgroup_temp) < 0 ||
virCgroupSetCpusetMemoryMigrate(cgroup_temp, true) < 0 ||
virCgroupGetCpusetMems(cgroup_temp, &nodeset) < 0 ||
virCgroupSetCpusetMems(cgroup_temp, nodeset) < 0)
}
for (i = 0; i < priv->niothreadpids; i++) {
- if (virCgroupNewIOThread(priv->cgroup, i + 1, false, &cgroup_temp) < 0 ||
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_IOTHREAD, i + 1,
+ false, &cgroup_temp) < 0 ||
virCgroupSetCpusetMemoryMigrate(cgroup_temp, true) < 0 ||
virCgroupGetCpusetMems(cgroup_temp, &nodeset) < 0 ||
virCgroupSetCpusetMems(cgroup_temp, nodeset) < 0)
virCgroupFree(&cgroup_temp);
}
- if (virCgroupNewEmulator(priv->cgroup, false, &cgroup_temp) < 0 ||
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_EMULATOR, 0,
+ false, &cgroup_temp) < 0 ||
virCgroupSetCpusetMemoryMigrate(cgroup_temp, true) < 0 ||
virCgroupGetCpusetMems(cgroup_temp, &nodeset) < 0 ||
virCgroupSetCpusetMems(cgroup_temp, nodeset) < 0)
for (i = 0; i < priv->nvcpupids; i++) {
virCgroupFree(&cgroup_vcpu);
- if (virCgroupNewVcpu(priv->cgroup, i, true, &cgroup_vcpu) < 0)
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_VCPU, i,
+ true, &cgroup_vcpu) < 0)
goto cleanup;
/* move the thread for vcpu to sub dir */
if (priv->cgroup == NULL)
return 0; /* Not supported, so claim success */
- if (virCgroupNewEmulator(priv->cgroup, true, &cgroup_emulator) < 0)
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_EMULATOR, 0,
+ true, &cgroup_emulator) < 0)
goto cleanup;
if (virCgroupMoveTask(priv->cgroup, cgroup_emulator) < 0)
/* IOThreads are numbered 1..n, although the array is 0..n-1,
* so we will account for that here
*/
- if (virCgroupNewIOThread(priv->cgroup, i + 1, true,
- &cgroup_iothread) < 0)
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_IOTHREAD, i + 1,
+ true, &cgroup_iothread) < 0)
goto cleanup;
/* move the thread for iothread to sub dir */
if (priv->cgroup) {
int rv = -1;
/* Create cgroup for the onlined vcpu */
- if (virCgroupNewVcpu(priv->cgroup, i, true, &cgroup_vcpu) < 0)
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_VCPU, i,
+ true, &cgroup_vcpu) < 0)
goto cleanup;
if (mem_mask &&
} else {
for (i = oldvcpus - 1; i >= nvcpus; i--) {
if (priv->cgroup) {
- if (virCgroupNewVcpu(priv->cgroup, i, false, &cgroup_vcpu) < 0)
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_VCPU, i,
+ false, &cgroup_vcpu) < 0)
goto cleanup;
/* Remove cgroup for the offlined vcpu */
if (flags & VIR_DOMAIN_AFFECT_LIVE && !(flags & VIR_DOMAIN_VCPU_GUEST) &&
virNumaIsAvailable()) {
- if (virCgroupNewEmulator(priv->cgroup, false, &cgroup_temp) < 0)
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_EMULATOR, 0,
+ false, &cgroup_temp) < 0)
goto endjob;
if (!(all_nodes = virNumaGetHostNodeset()))
/* Configure the corresponding cpuset cgroup before set affinity. */
if (virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPUSET)) {
- if (virCgroupNewVcpu(priv->cgroup, vcpu, false, &cgroup_vcpu) < 0)
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_VCPU, vcpu,
+ false, &cgroup_vcpu) < 0)
goto endjob;
if (qemuSetupCgroupCpusetCpus(cgroup_vcpu, pcpumap) < 0) {
virReportError(VIR_ERR_OPERATION_INVALID,
/*
* Configure the corresponding cpuset cgroup.
*/
- if (virCgroupNewEmulator(priv->cgroup, false, &cgroup_emulator) < 0)
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_EMULATOR,
+ 0, false, &cgroup_emulator) < 0)
goto endjob;
if (qemuSetupCgroupCpusetCpus(cgroup_emulator,
newVcpuPin[0]->cpumask) < 0) {
/* Configure the corresponding cpuset cgroup before set affinity. */
if (virCgroupHasController(priv->cgroup,
VIR_CGROUP_CONTROLLER_CPUSET)) {
- if (virCgroupNewIOThread(priv->cgroup, iothread_id,
- false, &cgroup_iothread) < 0)
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_IOTHREAD,
+ iothread_id, false, &cgroup_iothread) < 0)
goto endjob;
if (qemuSetupCgroupCpusetCpus(cgroup_iothread, pcpumap) < 0) {
virReportError(VIR_ERR_OPERATION_INVALID,
if (!(nodeset_str = virBitmapFormat(nodeset)))
goto cleanup;
- if (virCgroupNewEmulator(priv->cgroup, false, &cgroup_temp) < 0 ||
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_EMULATOR, 0,
+ false, &cgroup_temp) < 0 ||
virCgroupSetCpusetMems(cgroup_temp, nodeset_str) < 0)
goto cleanup;
virCgroupFree(&cgroup_temp);
for (i = 0; i < priv->nvcpupids; i++) {
- if (virCgroupNewVcpu(priv->cgroup, i, false, &cgroup_temp) < 0 ||
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_VCPU, i,
+ false, &cgroup_temp) < 0 ||
virCgroupSetCpusetMems(cgroup_temp, nodeset_str) < 0)
goto cleanup;
virCgroupFree(&cgroup_temp);
}
for (i = 0; i < priv->niothreadpids; i++) {
- if (virCgroupNewIOThread(priv->cgroup, i + 1, false,
- &cgroup_temp) < 0 ||
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_IOTHREAD, i + 1,
+ false, &cgroup_temp) < 0 ||
virCgroupSetCpusetMems(cgroup_temp, nodeset_str) < 0)
goto cleanup;
virCgroupFree(&cgroup_temp);
*/
if (priv->nvcpupids != 0 && priv->vcpupids[0] != vm->pid) {
for (i = 0; i < priv->nvcpupids; i++) {
- if (virCgroupNewVcpu(cgroup, i, false, &cgroup_vcpu) < 0)
+ if (virCgroupNewThread(cgroup, VIR_CGROUP_THREAD_VCPU, i,
+ false, &cgroup_vcpu) < 0)
goto cleanup;
if (qemuSetupCgroupVcpuBW(cgroup_vcpu, period, quota) < 0)
if (priv->nvcpupids == 0 || priv->vcpupids[0] == vm->pid)
return 0;
- if (virCgroupNewEmulator(cgroup, false, &cgroup_emulator) < 0)
+ if (virCgroupNewThread(cgroup, VIR_CGROUP_THREAD_EMULATOR, 0,
+ false, &cgroup_emulator) < 0)
goto cleanup;
if (qemuSetupCgroupVcpuBW(cgroup_emulator, period, quota) < 0)
}
/* get period and quota for vcpu0 */
- if (virCgroupNewVcpu(priv->cgroup, 0, false, &cgroup_vcpu) < 0)
+ if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_VCPU, 0,
+ false, &cgroup_vcpu) < 0)
goto cleanup;
rc = qemuGetVcpuBWLive(cgroup_vcpu, period, quota);
}
/* get period and quota for emulator */
- if (virCgroupNewEmulator(cgroup, false, &cgroup_emulator) < 0)
+ if (virCgroupNewThread(cgroup, VIR_CGROUP_THREAD_EMULATOR, 0,
+ false, &cgroup_emulator) < 0)
goto cleanup;
rc = qemuGetVcpuBWLive(cgroup_emulator, period, quota);
}
-/**
- * virCgroupNewVcpu:
- *
- * @domain: group for the domain
- * @vcpuid: id of the vcpu
- * @create: true to create if not already existing
- * @group: Pointer to returned virCgroupPtr
- *
- * Returns 0 on success, or -1 on error
- */
-int
-virCgroupNewVcpu(virCgroupPtr domain,
- int vcpuid,
- bool create,
- virCgroupPtr *group)
-{
- int ret = -1;
- char *name = NULL;
- int controllers;
-
- if (virAsprintf(&name, "vcpu%d", vcpuid) < 0)
- goto cleanup;
-
- controllers = ((1 << VIR_CGROUP_CONTROLLER_CPU) |
- (1 << VIR_CGROUP_CONTROLLER_CPUACCT) |
- (1 << VIR_CGROUP_CONTROLLER_CPUSET));
-
- if (virCgroupNew(-1, name, domain, controllers, group) < 0)
- goto cleanup;
-
- if (virCgroupMakeGroup(domain, *group, create, VIR_CGROUP_NONE) < 0) {
- virCgroupRemove(*group);
- virCgroupFree(group);
- goto cleanup;
- }
-
- ret = 0;
- cleanup:
- VIR_FREE(name);
- return ret;
-}
-
-
-/**
- * virCgroupNewEmulator:
- *
- * @domain: group for the domain
- * @create: true to create if not already existing
- * @group: Pointer to returned virCgroupPtr
- *
- * Returns: 0 on success or -1 on error
- */
-int
-virCgroupNewEmulator(virCgroupPtr domain,
- bool create,
- virCgroupPtr *group)
-{
- int ret = -1;
- int controllers;
-
- controllers = ((1 << VIR_CGROUP_CONTROLLER_CPU) |
- (1 << VIR_CGROUP_CONTROLLER_CPUACCT) |
- (1 << VIR_CGROUP_CONTROLLER_CPUSET));
-
- if (virCgroupNew(-1, "emulator", domain, controllers, group) < 0)
- goto cleanup;
-
- if (virCgroupMakeGroup(domain, *group, create, VIR_CGROUP_NONE) < 0) {
- virCgroupRemove(*group);
- virCgroupFree(group);
- goto cleanup;
- }
-
- ret = 0;
- cleanup:
- return ret;
-}
-
-
-/**
- * virCgroupNewIOThread:
- *
- * @domain: group for the domain
- * @iothreadid: id of the iothread
- * @create: true to create if not already existing
- * @group: Pointer to returned virCgroupPtr
- *
- * Returns 0 on success, or -1 on error
- */
-int
-virCgroupNewIOThread(virCgroupPtr domain,
- int iothreadid,
- bool create,
- virCgroupPtr *group)
-{
- int ret = -1;
- char *name = NULL;
- int controllers;
-
- if (virAsprintf(&name, "iothread%d", iothreadid) < 0)
- goto cleanup;
-
- controllers = ((1 << VIR_CGROUP_CONTROLLER_CPU) |
- (1 << VIR_CGROUP_CONTROLLER_CPUACCT) |
- (1 << VIR_CGROUP_CONTROLLER_CPUSET));
-
- if (virCgroupNew(-1, name, domain, controllers, group) < 0)
- goto cleanup;
-
- if (virCgroupMakeGroup(domain, *group, create, VIR_CGROUP_NONE) < 0) {
- virCgroupRemove(*group);
- virCgroupFree(group);
- goto cleanup;
- }
-
- ret = 0;
- cleanup:
- VIR_FREE(name);
- return ret;
-}
-
-
int
virCgroupNewDetect(pid_t pid,
int controllers,
unsigned long long tmp;
ssize_t j;
- if (virCgroupNewVcpu(group, i, false, &group_vcpu) < 0)
+ if (virCgroupNewThread(group, VIR_CGROUP_THREAD_VCPU, i,
+ false, &group_vcpu) < 0)
goto cleanup;
if (virCgroupGetCpuacctPercpuUsage(group_vcpu, &buf) < 0)
}
-int
-virCgroupNewVcpu(virCgroupPtr domain ATTRIBUTE_UNUSED,
- int vcpuid ATTRIBUTE_UNUSED,
- bool create ATTRIBUTE_UNUSED,
- virCgroupPtr *group ATTRIBUTE_UNUSED)
-{
- virReportSystemError(ENXIO, "%s",
- _("Control groups not supported on this platform"));
- return -1;
-}
-
-
-int
-virCgroupNewEmulator(virCgroupPtr domain ATTRIBUTE_UNUSED,
- bool create ATTRIBUTE_UNUSED,
- virCgroupPtr *group ATTRIBUTE_UNUSED)
-{
- virReportSystemError(ENXIO, "%s",
- _("Control groups not supported on this platform"));
- return -1;
-}
-
-
-int
-virCgroupNewIOThread(virCgroupPtr domain ATTRIBUTE_UNUSED,
- int iothreadid ATTRIBUTE_UNUSED,
- bool create ATTRIBUTE_UNUSED,
- virCgroupPtr *group ATTRIBUTE_UNUSED)
-{
- virReportSystemError(ENXIO, "%s",
- _("Control groups not supported on this platform"));
- return -1;
-}
-
-
int
virCgroupNewDetect(pid_t pid ATTRIBUTE_UNUSED,
int controllers ATTRIBUTE_UNUSED,
virCgroupPtr *group)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(5);
-int virCgroupNewVcpu(virCgroupPtr domain,
- int vcpuid,
- bool create,
- virCgroupPtr *group)
- ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(4);
-
-int virCgroupNewEmulator(virCgroupPtr domain,
- bool create,
- virCgroupPtr *group)
- ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3);
-
-int virCgroupNewIOThread(virCgroupPtr domain,
- int iothreadid,
- bool create,
- virCgroupPtr *group)
- ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(4);
-
int virCgroupNewDetect(pid_t pid,
int controllers,
virCgroupPtr *group);