From 36c5989c54cf335b365f4e179a4d7ab7d174bd6e Mon Sep 17 00:00:00 2001 From: Pavel Hrdina Date: Tue, 11 Sep 2018 15:06:29 +0200 Subject: [PATCH] vircgroup: introduce virCgroupTaskFlags MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Use flags in virCgroupAddTaskInternal instead of boolean parameter. Following patch will add new flag to indicate thread instead of process. Reviewed-by: Fabiano Fidêncio Reviewed-by: Ján Tomko Signed-off-by: Pavel Hrdina --- src/util/vircgroup.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c index a6d2166930..946cfb50b7 100644 --- a/src/util/vircgroup.c +++ b/src/util/vircgroup.c @@ -1152,8 +1152,21 @@ virCgroupNew(pid_t pid, } +typedef enum { + /* Adds a whole process with all threads to specific cgroup except + * to systemd named controller. */ + VIR_CGROUP_TASK_PROCESS = 1 << 0, + + /* Same as VIR_CGROUP_TASK_PROCESS but it also adds the task to systemd + * named controller. */ + VIR_CGROUP_TASK_SYSTEMD = 1 << 1, +} virCgroupTaskFlags; + + static int -virCgroupAddTaskInternal(virCgroupPtr group, pid_t pid, bool withSystemd) +virCgroupAddTaskInternal(virCgroupPtr group, + pid_t pid, + unsigned int flags) { int ret = -1; size_t i; @@ -1166,7 +1179,8 @@ virCgroupAddTaskInternal(virCgroupPtr group, pid_t pid, bool withSystemd) /* We must never add tasks in systemd's hierarchy * unless we're intentionally trying to move a * task into a systemd machine scope */ - if (i == VIR_CGROUP_CONTROLLER_SYSTEMD && !withSystemd) + if (i == VIR_CGROUP_CONTROLLER_SYSTEMD && + !(flags & VIR_CGROUP_TASK_SYSTEMD)) continue; if (virCgroupSetValueI64(group, i, "tasks", pid) < 0) @@ -1192,7 +1206,7 @@ virCgroupAddTaskInternal(virCgroupPtr group, pid_t pid, bool withSystemd) int virCgroupAddProcess(virCgroupPtr group, pid_t pid) { - return virCgroupAddTaskInternal(group, pid, false); + return virCgroupAddTaskInternal(group, pid, VIR_CGROUP_TASK_PROCESS); } /** @@ -1209,7 +1223,9 @@ virCgroupAddProcess(virCgroupPtr group, pid_t pid) int virCgroupAddMachineProcess(virCgroupPtr group, pid_t pid) { - return virCgroupAddTaskInternal(group, pid, true); + return virCgroupAddTaskInternal(group, pid, + VIR_CGROUP_TASK_PROCESS | + VIR_CGROUP_TASK_SYSTEMD); } -- 2.47.2