提交 6c5d4e7c 编写于 作者: D Daniel P. Berrange

Use enums for cgroup controller types / labels

上级 5320ce02
...@@ -31,15 +31,21 @@ ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册