]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
ftests: cgroup: add support to pass pid for systemd scope
authorKamalesh Babulal <kamalesh.babulal@oracle.com>
Tue, 25 Apr 2023 13:01:55 +0000 (18:31 +0530)
committerTom Hromatka <tom.hromatka@oracle.com>
Fri, 28 Apr 2023 20:44:08 +0000 (14:44 -0600)
Add support to pass a task pid, while creating systemd slice/scope, this
helps the users to specify the task they wish to run instead of the
default idle_thread in the transient scope.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
tests/ftests/cgroup.py

index b08d1f9f26070150ced3fa719870e61705255f90..e8436f5b522fed9692edc4e96b7f2fddd2b57e84 100644 (file)
@@ -127,7 +127,8 @@ class Cgroup(object):
     def create(config, controller_list, cgname, user_name=None,
                group_name=None, dperm=None, fperm=None, tperm=None,
                tasks_user_name=None, tasks_group_name=None, cghelp=False,
-               ignore_systemd=False, create_scope=False, set_default_scope=False):
+               ignore_systemd=False, create_scope=False, set_default_scope=False,
+               scope_pid=-1):
         if isinstance(controller_list, str):
             controller_list = [controller_list]
 
@@ -174,6 +175,12 @@ class Cgroup(object):
         if set_default_scope:
             cmd.append('-S')
 
+        # -p requires -c to be provided, but this is too checked in libcgroup itself
+
+        if scope_pid > 1:
+            cmd.append('-p')
+            cmd.append('{}'.format(scope_pid))
+
         if controller_list:
             controllers_and_path = '{}:{}'.format(
                 ','.join(controller_list), cgname)
@@ -200,9 +207,10 @@ class Cgroup(object):
     # True if the cgroup exists, False otherwise
     @staticmethod
     def create_and_validate(config, ctrl_name, cgroup_name, ignore_systemd=False,
-                            create_scope=False, set_default_scope=False):
+                            create_scope=False, set_default_scope=False, scope_pid=-1):
         Cgroup.create(config, ctrl_name, cgroup_name, ignore_systemd=ignore_systemd,
-                      create_scope=create_scope, set_default_scope=set_default_scope)
+                      create_scope=create_scope, set_default_scope=set_default_scope,
+                      scope_pid=scope_pid)
         return Cgroup.exists(config, ctrl_name, cgroup_name, ignore_systemd=ignore_systemd)
 
     @staticmethod