From efd9426e1771b6cdbcc7e58d3fd58d3df77c337e Mon Sep 17 00:00:00 2001 From: Michael McInerney Date: Wed, 25 Feb 2026 11:53:18 +1030 Subject: [PATCH] mcs: use local variable in restart This eases verification by using a local variable which remains unchanged during execution of the function. This preserves semantics since refill_unblock_check will not modify the tcbSchedContext field of any TCB. Signed-off-by: Michael McInerney --- src/kernel/thread.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/kernel/thread.c b/src/kernel/thread.c index d6fc2d85e..8f12a8b52 100644 --- a/src/kernel/thread.c +++ b/src/kernel/thread.c @@ -93,11 +93,11 @@ void restart(tcb_t *target) cancelIPC(target); #ifdef CONFIG_KERNEL_MCS setThreadState(target, ThreadState_Restart); - if (sc_sporadic(target->tcbSchedContext) - && target->tcbSchedContext != NODE_STATE(ksCurSC)) { - refill_unblock_check(target->tcbSchedContext); + sched_context_t *sc = target->tcbSchedContext; + if (sc_sporadic(sc) && sc != NODE_STATE(ksCurSC)) { + refill_unblock_check(sc); } - schedContext_resume(target->tcbSchedContext); + schedContext_resume(sc); if (isSchedulable(target)) { possibleSwitchTo(target); }