diff options
| author | Tejun Heo <tj@kernel.org> | 2026-03-13 09:43:22 -1000 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-03-13 09:43:22 -1000 |
| commit | f1c1dd9cc1b610e44d16210f5b9bd5e697c7cf74 (patch) | |
| tree | f3b43ce412bea0a137637791e7c939df37764a83 /kernel | |
| parent | 1d02346fec8d13b05e54296ddc6ae29b7e1067df (diff) | |
| download | linux-f1c1dd9cc1b610e44d16210f5b9bd5e697c7cf74.tar.gz linux-f1c1dd9cc1b610e44d16210f5b9bd5e697c7cf74.zip | |
sched_ext: Split task_should_reenq() into local and user variants
Split task_should_reenq() into local_task_should_reenq() and
user_task_should_reenq(). The local variant takes reenq_flags by pointer.
No functional change. This prepares for SCX_ENQ_IMMED which will add
IMMED-specific logic to the local variant.
Signed-off-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Andrea Righi <arighi@nvidia.com>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/sched/ext.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index e7ab3647e35f..774c012831e6 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -3725,13 +3725,10 @@ static void process_ddsp_deferred_locals(struct rq *rq) } } -static bool task_should_reenq(struct task_struct *p, u64 reenq_flags, u32 *reason) +static bool local_task_should_reenq(struct task_struct *p, u64 *reenq_flags, u32 *reason) { *reason = SCX_TASK_REENQ_KFUNC; - - if (reenq_flags & SCX_REENQ_ANY) - return true; - return false; + return *reenq_flags & SCX_REENQ_ANY; } static u32 reenq_local(struct scx_sched *sch, struct rq *rq, u64 reenq_flags) @@ -3769,7 +3766,7 @@ static u32 reenq_local(struct scx_sched *sch, struct rq *rq, u64 reenq_flags) if (!scx_is_descendant(task_sch, sch)) continue; - if (!task_should_reenq(p, reenq_flags, &reason)) + if (!local_task_should_reenq(p, &reenq_flags, &reason)) continue; dispatch_dequeue(rq, p); @@ -3826,6 +3823,12 @@ static void process_deferred_reenq_locals(struct rq *rq) } } +static bool user_task_should_reenq(struct task_struct *p, u64 reenq_flags, u32 *reason) +{ + *reason = SCX_TASK_REENQ_KFUNC; + return reenq_flags & SCX_REENQ_ANY; +} + static void reenq_user(struct rq *rq, struct scx_dispatch_q *dsq, u64 reenq_flags) { struct rq *locked_rq = rq; @@ -3846,7 +3849,7 @@ static void reenq_user(struct rq *rq, struct scx_dispatch_q *dsq, u64 reenq_flag if (!p) break; - if (!task_should_reenq(p, reenq_flags, &reason)) + if (!user_task_should_reenq(p, reenq_flags, &reason)) continue; task_rq = task_rq(p); |
