This is an automated email from the ASF dual-hosted git repository. jiuzhudong pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 0dbbce3a8fef199b024fb15fa96462f6d6c5141e Author: Jukka Laitinen <jukka.laiti...@tii.ae> AuthorDate: Tue Aug 19 13:05:39 2025 +0300 sched: Remove unnecessary affinity restriction & restoration over smp calls When the task has TCB_FLAG_CPU_LOCKED it is locked to the CPU regardless of the affinity. There is no need to switch the affinity back and forth. Signed-off-by: Jukka Laitinen <jukka.laiti...@tii.ae> --- sched/sched/sched_backtrace.c | 6 ------ sched/sched/sched_suspend.c | 6 ------ sched/signal/sig_dispatch.c | 6 ------ sched/task/task_restart.c | 6 ------ sched/task/task_terminate.c | 5 ----- 5 files changed, 29 deletions(-) diff --git a/sched/sched/sched_backtrace.c b/sched/sched/sched_backtrace.c index 3f057c95713..3d677308a3c 100644 --- a/sched/sched/sched_backtrace.c +++ b/sched/sched/sched_backtrace.c @@ -43,7 +43,6 @@ struct backtrace_arg_s FAR void **buffer; int size; int skip; - cpu_set_t saved_affinity; bool need_restore; }; @@ -72,7 +71,6 @@ static int sched_backtrace_handler(FAR void *cookie) if (arg->need_restore) { - tcb->affinity = arg->saved_affinity; tcb->flags &= ~TCB_FLAG_CPU_LOCKED; } @@ -126,12 +124,8 @@ int sched_backtrace(pid_t tid, FAR void **buffer, int size, int skip) else { arg.pid = tcb->pid; - arg.saved_affinity = tcb->affinity; arg.need_restore = true; - tcb->flags |= TCB_FLAG_CPU_LOCKED; - CPU_ZERO(&tcb->affinity); - CPU_SET(tcb->cpu, &tcb->affinity); } arg.buffer = buffer; diff --git a/sched/sched/sched_suspend.c b/sched/sched/sched_suspend.c index d17956325d2..4bbb6c8a780 100644 --- a/sched/sched/sched_suspend.c +++ b/sched/sched/sched_suspend.c @@ -45,7 +45,6 @@ struct suspend_arg_s { pid_t pid; - cpu_set_t saved_affinity; bool need_restore; }; @@ -73,7 +72,6 @@ static int nxsched_suspend_handler(FAR void *cookie) if (arg->need_restore) { - tcb->affinity = arg->saved_affinity; tcb->flags &= ~TCB_FLAG_CPU_LOCKED; } @@ -161,12 +159,8 @@ void nxsched_suspend(FAR struct tcb_s *tcb) else { arg.pid = tcb->pid; - arg.saved_affinity = tcb->affinity; arg.need_restore = true; - tcb->flags |= TCB_FLAG_CPU_LOCKED; - CPU_ZERO(&tcb->affinity); - CPU_SET(tcb->cpu, &tcb->affinity); } nxsched_smp_call_single(tcb->cpu, nxsched_suspend_handler, &arg); diff --git a/sched/signal/sig_dispatch.c b/sched/signal/sig_dispatch.c index 82867e31ee0..b1cb1e9d4ef 100644 --- a/sched/signal/sig_dispatch.c +++ b/sched/signal/sig_dispatch.c @@ -53,7 +53,6 @@ struct sig_arg_s { pid_t pid; - cpu_set_t saved_affinity; bool need_restore; }; @@ -82,7 +81,6 @@ static int sig_handler(FAR void *cookie) if (arg->need_restore) { - tcb->affinity = arg->saved_affinity; tcb->flags &= ~TCB_FLAG_CPU_LOCKED; } @@ -175,12 +173,8 @@ static int nxsig_queue_action(FAR struct tcb_s *stcb, } else { - arg.saved_affinity = stcb->affinity; arg.need_restore = true; - stcb->flags |= TCB_FLAG_CPU_LOCKED; - CPU_ZERO(&stcb->affinity); - CPU_SET(stcb->cpu, &stcb->affinity); } arg.pid = stcb->pid; diff --git a/sched/task/task_restart.c b/sched/task/task_restart.c index aa794921405..07566a3d99e 100644 --- a/sched/task/task_restart.c +++ b/sched/task/task_restart.c @@ -48,7 +48,6 @@ struct restart_arg_s { pid_t pid; - cpu_set_t saved_affinity; bool need_restore; }; @@ -78,7 +77,6 @@ static int restart_handler(FAR void *cookie) if (arg->need_restore) { - tcb->affinity = arg->saved_affinity; tcb->flags &= ~TCB_FLAG_CPU_LOCKED; } @@ -237,12 +235,8 @@ static int nxtask_restart(pid_t pid) else { arg.pid = tcb->pid; - arg.saved_affinity = tcb->affinity; arg.need_restore = true; - tcb->flags |= TCB_FLAG_CPU_LOCKED; - CPU_ZERO(&tcb->affinity); - CPU_SET(tcb->cpu, &tcb->affinity); } nxsched_smp_call_single(tcb->cpu, restart_handler, &arg); diff --git a/sched/task/task_terminate.c b/sched/task/task_terminate.c index 05c2810707c..16e1b6a69e6 100644 --- a/sched/task/task_terminate.c +++ b/sched/task/task_terminate.c @@ -137,15 +137,11 @@ int nxtask_terminate(pid_t pid) if (task_state == TSTATE_TASK_RUNNING && dtcb->cpu != this_cpu()) { - cpu_set_t affinity; uint16_t tcb_flags; int ret; tcb_flags = dtcb->flags; dtcb->flags |= TCB_FLAG_CPU_LOCKED; - affinity = dtcb->affinity; - CPU_ZERO(&dtcb->affinity); - CPU_SET(dtcb->cpu, &dtcb->affinity); ret = nxsched_smp_call_single(dtcb->cpu, terminat_handler, (FAR void *)(uintptr_t)pid); @@ -159,7 +155,6 @@ int nxtask_terminate(pid_t pid) } dtcb->flags = tcb_flags; - dtcb->affinity = affinity; } else #endif