mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 09:55:18 +00:00
Use enums for cgroup controller types / labels
This commit is contained in:
parent
5320ce02d8
commit
6c5d4e7cf4
46
src/cgroup.c
46
src/cgroup.c
@ -31,15 +31,21 @@
|
|||||||
|
|
||||||
#define CGROUP_MAX_VAL 512
|
#define CGROUP_MAX_VAL 512
|
||||||
|
|
||||||
struct virCgroup {
|
enum {
|
||||||
char *path;
|
VIR_CGROUP_CONTROLLER_CPUACCT,
|
||||||
|
VIR_CGROUP_CONTROLLER_MEMORY,
|
||||||
|
VIR_CGROUP_CONTROLLER_DEVICES,
|
||||||
|
VIR_CGROUP_CONTROLLER_CPUSET,
|
||||||
|
|
||||||
|
VIR_CGROUP_CONTROLLER_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *supported_controllers[] = {
|
VIR_ENUM_DECL(virCgroupController);
|
||||||
"memory",
|
VIR_ENUM_IMPL(virCgroupController, VIR_CGROUP_CONTROLLER_LAST,
|
||||||
"devices",
|
"cpuacct", "memory", "devices", "cpuset");
|
||||||
"cpuacct",
|
|
||||||
NULL
|
struct virCgroup {
|
||||||
|
char *path;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -107,8 +113,9 @@ int virCgroupHaveSupport(void)
|
|||||||
virCgroupPtr root;
|
virCgroupPtr root;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; supported_controllers[i] != NULL; i++) {
|
for (i = 0 ; i < VIR_CGROUP_CONTROLLER_LAST ; i++) {
|
||||||
root = virCgroupGetMount(supported_controllers[i]);
|
const char *label = virCgroupControllerTypeToString(i);
|
||||||
|
root = virCgroupGetMount(label);
|
||||||
if (root == NULL)
|
if (root == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
virCgroupFree(&root);
|
virCgroupFree(&root);
|
||||||
@ -419,15 +426,16 @@ static int virCgroupMakeGroup(const char *name)
|
|||||||
int i;
|
int i;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
for (i = 0; supported_controllers[i] != NULL; i++) {
|
for (i = 0 ; i < VIR_CGROUP_CONTROLLER_LAST ; i++) {
|
||||||
|
const char *label = virCgroupControllerTypeToString(i);
|
||||||
char *path = NULL;
|
char *path = NULL;
|
||||||
virCgroupPtr root;
|
virCgroupPtr root;
|
||||||
|
|
||||||
root = virCgroupGetMount(supported_controllers[i]);
|
root = virCgroupGetMount(label);
|
||||||
if (root == NULL)
|
if (root == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
rc = virCgroupPathOfGroup(name, supported_controllers[i], &path);
|
rc = virCgroupPathOfGroup(name, label, &path);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
virCgroupFree(&root);
|
virCgroupFree(&root);
|
||||||
break;
|
break;
|
||||||
@ -521,6 +529,7 @@ static int virCgroupOpen(virCgroupPtr parent,
|
|||||||
virCgroupPtr *newgroup)
|
virCgroupPtr *newgroup)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
const char *label = virCgroupControllerTypeToString(0);
|
||||||
char *grppath = NULL;
|
char *grppath = NULL;
|
||||||
bool free_parent = (parent == NULL);
|
bool free_parent = (parent == NULL);
|
||||||
|
|
||||||
@ -532,7 +541,7 @@ static int virCgroupOpen(virCgroupPtr parent,
|
|||||||
virCgroupFree(&parent);
|
virCgroupFree(&parent);
|
||||||
|
|
||||||
rc = virCgroupPathOfGroup((*newgroup)->path,
|
rc = virCgroupPathOfGroup((*newgroup)->path,
|
||||||
supported_controllers[0],
|
label,
|
||||||
&grppath);
|
&grppath);
|
||||||
if (rc != 0)
|
if (rc != 0)
|
||||||
goto err;
|
goto err;
|
||||||
@ -594,9 +603,10 @@ int virCgroupRemove(virCgroupPtr group)
|
|||||||
int i;
|
int i;
|
||||||
char *grppath = NULL;
|
char *grppath = NULL;
|
||||||
|
|
||||||
for (i = 0; supported_controllers[i] != NULL; i++) {
|
for (i = 0 ; i < VIR_CGROUP_CONTROLLER_LAST ; i++) {
|
||||||
|
const char *label = virCgroupControllerTypeToString(i);
|
||||||
if (virCgroupPathOfGroup(group->path,
|
if (virCgroupPathOfGroup(group->path,
|
||||||
supported_controllers[i],
|
label,
|
||||||
&grppath) != 0)
|
&grppath) != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -626,9 +636,11 @@ int virCgroupAddTask(virCgroupPtr group, pid_t pid)
|
|||||||
char *taskpath = NULL;
|
char *taskpath = NULL;
|
||||||
char *pidstr = NULL;
|
char *pidstr = NULL;
|
||||||
|
|
||||||
for (i = 0; supported_controllers[i] != NULL; i++) {
|
for (i = 0 ; i < VIR_CGROUP_CONTROLLER_LAST ; i++) {
|
||||||
|
const char *label = virCgroupControllerTypeToString(i);
|
||||||
|
|
||||||
rc = virCgroupPathOfGroup(group->path,
|
rc = virCgroupPathOfGroup(group->path,
|
||||||
supported_controllers[i],
|
label,
|
||||||
&grppath);
|
&grppath);
|
||||||
if (rc != 0)
|
if (rc != 0)
|
||||||
goto done;
|
goto done;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user