Unverified Commit 61bc346c authored by Eugene Syromiatnikov's avatar Eugene Syromiatnikov Committed by Christian Brauner
Browse files

uapi/linux/prctl: provide macro definitions for the PR_SCHED_CORE type argument

Commit 7ac592aa ("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: default avatarChristian Brauner <christian.brauner@ubuntu.com>
Acked-by: default avatarChristian Brauner <christian.brauner@ubuntu.com>
Signed-off-by: default avatarEugene Syromiatnikov <esyr@redhat.com>
Complements: 7ac592aa ("sched: prctl() core-scheduling interface")
Signed-off-by: default avatarChristian Brauner <christian.brauner@ubuntu.com>
parent 5816b3e6
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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:
+3 −0
Original line number Diff line number Diff line
@@ -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 */
+4 −0
Original line number Diff line number Diff line
@@ -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;