Skip to content

Commit 2440b4e

Browse files
wangchdoxiaoxiang781216
authored andcommitted
sched/sched: Fix nxsched_suspend() logic
nxsched_deliver_task() or nxsched_merge_pending() should only be called when a context switch is required. This behavior is independent of whether the current task is locked. Signed-off-by: Chengdong Wang <[email protected]>
1 parent d996c2e commit 2440b4e

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

sched/sched/sched_suspend.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,12 @@ void nxsched_suspend(FAR struct tcb_s *tcb)
170170
{
171171
switch_needed = nxsched_remove_readytorun(tcb);
172172

173-
if (switch_needed || !nxsched_islocked_tcb(rtcb))
173+
if (switch_needed)
174174
{
175175
#ifdef CONFIG_SMP
176-
switch_needed |= nxsched_deliver_task(cpu, tcb->cpu,
177-
SWITCH_HIGHER);
176+
nxsched_deliver_task(cpu, tcb->cpu, SWITCH_HIGHER);
178177
#else
179-
switch_needed |= nxsched_merge_pending();
178+
nxsched_merge_pending();
180179
#endif
181180
}
182181

0 commit comments

Comments
 (0)