Skip to content
This repository was archived by the owner on Apr 13, 2023. It is now read-only.

Commit

Permalink
sched: Enumerate CPU cgroup file types
Browse files Browse the repository at this point in the history
Rename cpu[_legacy]_files to cpu[_legacy]_cftypes for clarity and add
cpu_cftype_id which enumerates every cgroup2 interface file type. This
doesn't make any functional difference now. The enums will be used to access
specific cftypes by a new BPF extensible sched_class to selectively show and
hide CPU controller interface files depending on the capability of the
currently loaded BPF scheduler progs.

Signed-off-by: Tejun Heo <[email protected]>
Reviewed-by: David Vernet <[email protected]>
Acked-by: Josh Don <[email protected]>
Acked-by: Hao Luo <[email protected]>
Acked-by: Barret Rhoden <[email protected]>
  • Loading branch information
htejun committed Apr 13, 2023
1 parent 82e6cbd commit b3f0cb9
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 11 deletions.
22 changes: 11 additions & 11 deletions kernel/sched/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -11014,7 +11014,7 @@ static int cpu_idle_write_s64(struct cgroup_subsys_state *css,
}
#endif

static struct cftype cpu_legacy_files[] = {
static struct cftype cpu_legacy_cftypes[] = {
#ifdef CONFIG_FAIR_GROUP_SCHED
{
.name = "shares",
Expand Down Expand Up @@ -11221,49 +11221,49 @@ static ssize_t cpu_max_write(struct kernfs_open_file *of,
}
#endif

static struct cftype cpu_files[] = {
struct cftype cpu_cftypes[CPU_CFTYPE_CNT + 1] = {
#ifdef CONFIG_FAIR_GROUP_SCHED
{
[CPU_CFTYPE_WEIGHT] = {
.name = "weight",
.flags = CFTYPE_NOT_ON_ROOT,
.read_u64 = cpu_weight_read_u64,
.write_u64 = cpu_weight_write_u64,
},
{
[CPU_CFTYPE_WEIGHT_NICE] = {
.name = "weight.nice",
.flags = CFTYPE_NOT_ON_ROOT,
.read_s64 = cpu_weight_nice_read_s64,
.write_s64 = cpu_weight_nice_write_s64,
},
{
[CPU_CFTYPE_IDLE] = {
.name = "idle",
.flags = CFTYPE_NOT_ON_ROOT,
.read_s64 = cpu_idle_read_s64,
.write_s64 = cpu_idle_write_s64,
},
#endif
#ifdef CONFIG_CFS_BANDWIDTH
{
[CPU_CFTYPE_MAX] = {
.name = "max",
.flags = CFTYPE_NOT_ON_ROOT,
.seq_show = cpu_max_show,
.write = cpu_max_write,
},
{
[CPU_CFTYPE_MAX_BURST] = {
.name = "max.burst",
.flags = CFTYPE_NOT_ON_ROOT,
.read_u64 = cpu_cfs_burst_read_u64,
.write_u64 = cpu_cfs_burst_write_u64,
},
#endif
#ifdef CONFIG_UCLAMP_TASK_GROUP
{
[CPU_CFTYPE_UCLAMP_MIN] = {
.name = "uclamp.min",
.flags = CFTYPE_NOT_ON_ROOT,
.seq_show = cpu_uclamp_min_show,
.write = cpu_uclamp_min_write,
},
{
[CPU_CFTYPE_UCLAMP_MAX] = {
.name = "uclamp.max",
.flags = CFTYPE_NOT_ON_ROOT,
.seq_show = cpu_uclamp_max_show,
Expand All @@ -11283,8 +11283,8 @@ struct cgroup_subsys cpu_cgrp_subsys = {
.can_attach = cpu_cgroup_can_attach,
#endif
.attach = cpu_cgroup_attach,
.legacy_cftypes = cpu_legacy_files,
.dfl_cftypes = cpu_files,
.legacy_cftypes = cpu_legacy_cftypes,
.dfl_cftypes = cpu_cftypes,
.early_init = true,
.threaded = true,
};
Expand Down
21 changes: 21 additions & 0 deletions kernel/sched/sched.h
Original file line number Diff line number Diff line change
Expand Up @@ -3379,4 +3379,25 @@ static inline void switch_mm_cid(struct task_struct *prev, struct task_struct *n
static inline void switch_mm_cid(struct task_struct *prev, struct task_struct *next) { }
#endif

#ifdef CONFIG_CGROUP_SCHED
enum cpu_cftype_id {
#ifdef CONFIG_FAIR_GROUP_SCHED
CPU_CFTYPE_WEIGHT,
CPU_CFTYPE_WEIGHT_NICE,
CPU_CFTYPE_IDLE,
#endif
#ifdef CONFIG_CFS_BANDWIDTH
CPU_CFTYPE_MAX,
CPU_CFTYPE_MAX_BURST,
#endif
#ifdef CONFIG_UCLAMP_TASK_GROUP
CPU_CFTYPE_UCLAMP_MIN,
CPU_CFTYPE_UCLAMP_MAX,
#endif
CPU_CFTYPE_CNT,
};

extern struct cftype cpu_cftypes[CPU_CFTYPE_CNT + 1];
#endif /* CONFIG_CGROUP_SCHED */

#endif /* _KERNEL_SCHED_SCHED_H */

0 comments on commit b3f0cb9

Please sign in to comment.