]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched_ext, sched/core: Factor out struct scx_task_group
authorTejun Heo <tj@kernel.org>
Sat, 14 Jun 2025 01:33:10 +0000 (15:33 -1000)
committerTejun Heo <tj@kernel.org>
Sat, 21 Jun 2025 03:03:27 +0000 (17:03 -1000)
More sched_ext fields will be added to struct task_group. In preparation,
factor out sched_ext fields into struct scx_task_group to reduce clutter in
the common header. No functional changes.

Signed-off-by: Tejun Heo <tj@kernel.org>
include/linux/sched/ext.h
kernel/sched/ext.c
kernel/sched/sched.h

index f7545430a54821193bcfecd0a1a21c326cc438b1..eda89acdb7ab1eccb5050fa7dbe11db63103cf11 100644 (file)
@@ -214,4 +214,12 @@ static inline void print_scx_info(const char *log_lvl, struct task_struct *p) {}
 static inline void scx_softlockup(u32 dur_s) {}
 
 #endif /* CONFIG_SCHED_CLASS_EXT */
+
+struct scx_task_group {
+#ifdef CONFIG_EXT_GROUP_SCHED
+       u32                     flags;          /* SCX_TG_* */
+       u32                     weight;
+#endif
+};
+
 #endif /* _LINUX_SCHED_EXT_H */
index 4db51e708f8637562ff6a5d3b915d67f00a23350..6732e50e0679334eb135be458888577a8496e1d0 100644 (file)
@@ -4058,7 +4058,7 @@ static bool scx_cgroup_enabled;
 
 void scx_tg_init(struct task_group *tg)
 {
-       tg->scx_weight = CGROUP_WEIGHT_DFL;
+       tg->scx.weight = CGROUP_WEIGHT_DFL;
 }
 
 int scx_tg_online(struct task_group *tg)
@@ -4066,14 +4066,14 @@ int scx_tg_online(struct task_group *tg)
        struct scx_sched *sch = scx_root;
        int ret = 0;
 
-       WARN_ON_ONCE(tg->scx_flags & (SCX_TG_ONLINE | SCX_TG_INITED));
+       WARN_ON_ONCE(tg->scx.flags & (SCX_TG_ONLINE | SCX_TG_INITED));
 
        percpu_down_read(&scx_cgroup_rwsem);
 
        if (scx_cgroup_enabled) {
                if (SCX_HAS_OP(sch, cgroup_init)) {
                        struct scx_cgroup_init_args args =
-                               { .weight = tg->scx_weight };
+                               { .weight = tg->scx.weight };
 
                        ret = SCX_CALL_OP_RET(sch, SCX_KF_UNLOCKED, cgroup_init,
                                              NULL, tg->css.cgroup, &args);
@@ -4081,9 +4081,9 @@ int scx_tg_online(struct task_group *tg)
                                ret = ops_sanitize_err(sch, "cgroup_init", ret);
                }
                if (ret == 0)
-                       tg->scx_flags |= SCX_TG_ONLINE | SCX_TG_INITED;
+                       tg->scx.flags |= SCX_TG_ONLINE | SCX_TG_INITED;
        } else {
-               tg->scx_flags |= SCX_TG_ONLINE;
+               tg->scx.flags |= SCX_TG_ONLINE;
        }
 
        percpu_up_read(&scx_cgroup_rwsem);
@@ -4094,15 +4094,15 @@ void scx_tg_offline(struct task_group *tg)
 {
        struct scx_sched *sch = scx_root;
 
-       WARN_ON_ONCE(!(tg->scx_flags & SCX_TG_ONLINE));
+       WARN_ON_ONCE(!(tg->scx.flags & SCX_TG_ONLINE));
 
        percpu_down_read(&scx_cgroup_rwsem);
 
        if (scx_cgroup_enabled && SCX_HAS_OP(sch, cgroup_exit) &&
-           (tg->scx_flags & SCX_TG_INITED))
+           (tg->scx.flags & SCX_TG_INITED))
                SCX_CALL_OP(sch, SCX_KF_UNLOCKED, cgroup_exit, NULL,
                            tg->css.cgroup);
-       tg->scx_flags &= ~(SCX_TG_ONLINE | SCX_TG_INITED);
+       tg->scx.flags &= ~(SCX_TG_ONLINE | SCX_TG_INITED);
 
        percpu_up_read(&scx_cgroup_rwsem);
 }
@@ -4211,11 +4211,11 @@ void scx_group_set_weight(struct task_group *tg, unsigned long weight)
        percpu_down_read(&scx_cgroup_rwsem);
 
        if (scx_cgroup_enabled && SCX_HAS_OP(sch, cgroup_set_weight) &&
-           tg->scx_weight != weight)
+           tg->scx.weight != weight)
                SCX_CALL_OP(sch, SCX_KF_UNLOCKED, cgroup_set_weight, NULL,
                            tg_cgrp(tg), weight);
 
-       tg->scx_weight = weight;
+       tg->scx.weight = weight;
 
        percpu_up_read(&scx_cgroup_rwsem);
 }
@@ -4366,9 +4366,9 @@ static void scx_cgroup_exit(struct scx_sched *sch)
        css_for_each_descendant_post(css, &root_task_group.css) {
                struct task_group *tg = css_tg(css);
 
-               if (!(tg->scx_flags & SCX_TG_INITED))
+               if (!(tg->scx.flags & SCX_TG_INITED))
                        continue;
-               tg->scx_flags &= ~SCX_TG_INITED;
+               tg->scx.flags &= ~SCX_TG_INITED;
 
                if (!sch->ops.cgroup_exit)
                        continue;
@@ -4400,14 +4400,14 @@ static int scx_cgroup_init(struct scx_sched *sch)
        rcu_read_lock();
        css_for_each_descendant_pre(css, &root_task_group.css) {
                struct task_group *tg = css_tg(css);
-               struct scx_cgroup_init_args args = { .weight = tg->scx_weight };
+               struct scx_cgroup_init_args args = { .weight = tg->scx.weight };
 
-               if ((tg->scx_flags &
+               if ((tg->scx.flags &
                     (SCX_TG_ONLINE | SCX_TG_INITED)) != SCX_TG_ONLINE)
                        continue;
 
                if (!sch->ops.cgroup_init) {
-                       tg->scx_flags |= SCX_TG_INITED;
+                       tg->scx.flags |= SCX_TG_INITED;
                        continue;
                }
 
@@ -4422,7 +4422,7 @@ static int scx_cgroup_init(struct scx_sched *sch)
                        scx_error(sch, "ops.cgroup_init() failed (%d)", ret);
                        return ret;
                }
-               tg->scx_flags |= SCX_TG_INITED;
+               tg->scx.flags |= SCX_TG_INITED;
 
                rcu_read_lock();
                css_put(css);
index 105190b18020318a3f39f6bbf8d3d5e6c968acd4..fdf5f52b54a3b11090d29ef4042b229d3433ee09 100644 (file)
@@ -471,10 +471,7 @@ struct task_group {
        struct rt_bandwidth     rt_bandwidth;
 #endif
 
-#ifdef CONFIG_EXT_GROUP_SCHED
-       u32                     scx_flags;      /* SCX_TG_* */
-       u32                     scx_weight;
-#endif
+       struct scx_task_group   scx;
 
        struct rcu_head         rcu;
        struct list_head        list;