]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched_ext: Make scx_exit() and scx_vexit() return bool
authorTejun Heo <tj@kernel.org>
Tue, 11 Nov 2025 19:18:09 +0000 (09:18 -1000)
committerTejun Heo <tj@kernel.org>
Wed, 12 Nov 2025 16:43:44 +0000 (06:43 -1000)
Make scx_exit() and scx_vexit() return bool indicating whether the calling
thread successfully claimed the exit. This will be used by the abort mechanism
added in a later patch.

Reviewed-by: Dan Schatzberg <schatzberg.dan@gmail.com>
Reviewed-by: Andrea Righi <arighi@nvidia.com>
Cc: Emil Tsalapatis <etsal@meta.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/sched/ext.c

index 56a6d453543a292d3e25793f261875c711f97f3d..e6e69a7fe105328d96160bec7be00764deb181b5 100644 (file)
@@ -174,18 +174,21 @@ MODULE_PARM_DESC(slice_bypass_us, "bypass slice in microseconds, applied on [un]
 static void process_ddsp_deferred_locals(struct rq *rq);
 static u32 reenq_local(struct rq *rq);
 static void scx_kick_cpu(struct scx_sched *sch, s32 cpu, u64 flags);
-static void scx_vexit(struct scx_sched *sch, enum scx_exit_kind kind,
+static bool scx_vexit(struct scx_sched *sch, enum scx_exit_kind kind,
                      s64 exit_code, const char *fmt, va_list args);
 
-static __printf(4, 5) void scx_exit(struct scx_sched *sch,
+static __printf(4, 5) bool scx_exit(struct scx_sched *sch,
                                    enum scx_exit_kind kind, s64 exit_code,
                                    const char *fmt, ...)
 {
        va_list args;
+       bool ret;
 
        va_start(args, fmt);
-       scx_vexit(sch, kind, exit_code, fmt, args);
+       ret = scx_vexit(sch, kind, exit_code, fmt, args);
        va_end(args);
+
+       return ret;
 }
 
 #define scx_error(sch, fmt, args...)   scx_exit((sch), SCX_EXIT_ERROR, 0, fmt, ##args)
@@ -4400,14 +4403,14 @@ static void scx_error_irq_workfn(struct irq_work *irq_work)
        kthread_queue_work(sch->helper, &sch->disable_work);
 }
 
-static void scx_vexit(struct scx_sched *sch,
+static bool scx_vexit(struct scx_sched *sch,
                      enum scx_exit_kind kind, s64 exit_code,
                      const char *fmt, va_list args)
 {
        struct scx_exit_info *ei = sch->exit_info;
 
        if (!scx_claim_exit(sch, kind))
-               return;
+               return false;
 
        ei->exit_code = exit_code;
 #ifdef CONFIG_STACKTRACE
@@ -4424,6 +4427,7 @@ static void scx_vexit(struct scx_sched *sch,
        ei->reason = scx_exit_reason(ei->kind);
 
        irq_work_queue(&sch->error_irq_work);
+       return true;
 }
 
 static int alloc_kick_syncs(void)