diff --git a/arch/arm/src/armv7-a/arm_schedulesigaction.c b/arch/arm/src/armv7-a/arm_schedulesigaction.c index 0ec3a1e15bb..ce765a33e77 100644 --- a/arch/arm/src/armv7-a/arm_schedulesigaction.c +++ b/arch/arm/src/armv7-a/arm_schedulesigaction.c @@ -274,7 +274,11 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) tcb->irqcount++; /* Handle a possible race condition where the TCB was suspended - * just before we paused the other CPU. + * just before we paused the other CPU. The critical section + * established above will prevent new threads from running on + * that CPU, but it will not guarantee that the running thread + * did not suspend itself (allowing any threads "assigned" to + * the CPU to run). */ if (tcb->task_state != TSTATE_TASK_RUNNING) diff --git a/arch/arm/src/armv7-m/up_schedulesigaction.c b/arch/arm/src/armv7-m/up_schedulesigaction.c index 2ba672c55a7..fd248dc012b 100644 --- a/arch/arm/src/armv7-m/up_schedulesigaction.c +++ b/arch/arm/src/armv7-m/up_schedulesigaction.c @@ -310,7 +310,11 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) tcb->irqcount++; /* Handle a possible race condition where the TCB was suspended - * just before we paused the other CPU. + * just before we paused the other CPU. The critical section + * established above will prevent new threads from running on + * that CPU, but it will not guarantee that the running thread + * did not suspend itself (allowing any threads "assigned" to + * the CPU to run). */ if (tcb->task_state != TSTATE_TASK_RUNNING) diff --git a/arch/xtensa/src/common/xtensa_schedsigaction.c b/arch/xtensa/src/common/xtensa_schedsigaction.c index b9c01ef5b52..42d309e9b57 100644 --- a/arch/xtensa/src/common/xtensa_schedsigaction.c +++ b/arch/xtensa/src/common/xtensa_schedsigaction.c @@ -283,7 +283,11 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) tcb->irqcount++; /* Handle a possible race condition where the TCB was suspended - * just before we paused the other CPU. + * just before we paused the other CPU. The critical section + * established above will prevent new threads from running on + * that CPU, but it will not guarantee that the running thread + * did not suspend itself (allowing any threads "assigned" to + * the CPU to run). */ if (tcb->task_state != TSTATE_TASK_RUNNING)