]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
uapi/linux/prctl: provide macro definitions for the PR_SCHED_CORE type argument
authorEugene Syromiatnikov <esyr@redhat.com>
Wed, 25 Aug 2021 17:06:13 +0000 (19:06 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Wed, 29 Sep 2021 11:00:05 +0000 (13:00 +0200)
Commit 7ac592aa35a684ff ("sched: prctl() core-scheduling interface")
made use of enum pid_type in prctl's arg4; this type and the associated
enumeration definitions are not exposed to userspace.  Christian
has suggested to provide additional macro definitions that convey
the meaning of the type argument more in alignment with its actual
usage, and this patch does exactly that.

Link: https://lore.kernel.org/r/20210825170613.GA3884@asgard.redhat.com
Suggested-by: Christian Brauner <christian.brauner@ubuntu.com>
Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
Signed-off-by: Eugene Syromiatnikov <esyr@redhat.com>
Complements: 7ac592aa35a684ff ("sched: prctl() core-scheduling interface")
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Documentation/admin-guide/hw-vuln/core-scheduling.rst
include/uapi/linux/prctl.h
kernel/sched/core_sched.c

index 0febe458597c52a0cb1dc6b2db9b011f343d283d..cf1eeefdfc32f309cbcfc41b78f423b2e2e0cfc0 100644 (file)
@@ -61,8 +61,9 @@ arg3:
     ``pid`` of the task for which the operation applies.
 
 arg4:
-    ``pid_type`` for which the operation applies. It is of type ``enum pid_type``.
-    For example, if arg4 is ``PIDTYPE_TGID``, then the operation of this command
+    ``pid_type`` for which the operation applies. It is one of
+    ``PR_SCHED_CORE_SCOPE_``-prefixed macro constants.  For example, if arg4
+    is ``PR_SCHED_CORE_SCOPE_THREAD_GROUP``, then the operation of this command
     will be performed for all tasks in the task group of ``pid``.
 
 arg5:
index 43bd7f713c39d13df1b55f0b4aa50a2aeb5f287a..b2e4dc1449b9e3e5a929f89aafeef9db133b69c1 100644 (file)
@@ -268,5 +268,8 @@ struct prctl_mm_map {
 # define PR_SCHED_CORE_SHARE_TO                2 /* push core_sched cookie to pid */
 # define PR_SCHED_CORE_SHARE_FROM      3 /* pull core_sched cookie to pid */
 # define PR_SCHED_CORE_MAX             4
+# define PR_SCHED_CORE_SCOPE_THREAD            0
+# define PR_SCHED_CORE_SCOPE_THREAD_GROUP      1
+# define PR_SCHED_CORE_SCOPE_PROCESS_GROUP     2
 
 #endif /* _LINUX_PRCTL_H */
index 9a80e9a474c07836308e0300a061a07c337894a1..20f6409494501d3626b093106bb9f0b50de1cd1d 100644 (file)
@@ -134,6 +134,10 @@ int sched_core_share_pid(unsigned int cmd, pid_t pid, enum pid_type type,
        if (!static_branch_likely(&sched_smt_present))
                return -ENODEV;
 
+       BUILD_BUG_ON(PR_SCHED_CORE_SCOPE_THREAD != PIDTYPE_PID);
+       BUILD_BUG_ON(PR_SCHED_CORE_SCOPE_THREAD_GROUP != PIDTYPE_TGID);
+       BUILD_BUG_ON(PR_SCHED_CORE_SCOPE_PROCESS_GROUP != PIDTYPE_PGID);
+
        if (type > PIDTYPE_PGID || cmd >= PR_SCHED_CORE_MAX || pid < 0 ||
            (cmd != PR_SCHED_CORE_GET && uaddr))
                return -EINVAL;