mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
vircgroup: introduce virCgroupV2AddTask
In cgroups v2 we need to handle threads and processes differently. If you need to move a process you need to write its pid into cgrou.procs file and it will move the process with all its threads as well. The whole process will be moved if you use tid of any thread. In order to move only threads at first we need to create threaded group and after that we can write the relevant thread tids into cgroup.threads file. Threads can be moved only into cgroups that are children of cgroup of its process. Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
4fe4847438
commit
48572f8825
@ -431,6 +431,20 @@ virCgroupV2Remove(virCgroupPtr group)
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
virCgroupV2AddTask(virCgroupPtr group,
|
||||
pid_t pid,
|
||||
unsigned int flags)
|
||||
{
|
||||
int controller = virCgroupV2GetAnyController(group);
|
||||
|
||||
if (flags & VIR_CGROUP_TASK_THREAD)
|
||||
return virCgroupSetValueI64(group, controller, "cgroup.threads", pid);
|
||||
else
|
||||
return virCgroupSetValueI64(group, controller, "cgroup.procs", pid);
|
||||
}
|
||||
|
||||
|
||||
virCgroupBackend virCgroupV2Backend = {
|
||||
.type = VIR_CGROUP_BACKEND_TYPE_V2,
|
||||
|
||||
@ -448,6 +462,7 @@ virCgroupBackend virCgroupV2Backend = {
|
||||
.pathOfController = virCgroupV2PathOfController,
|
||||
.makeGroup = virCgroupV2MakeGroup,
|
||||
.remove = virCgroupV2Remove,
|
||||
.addTask = virCgroupV2AddTask,
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user