From 4d4f8d0d50bedc37e1d07c96aded7d2bc20f0d6c Mon Sep 17 00:00:00 2001 From: chinglee-iot <61685396+chinglee-iot@users.noreply.github.com> Date: Thu, 11 Apr 2024 15:12:03 +0800 Subject: [PATCH] Fix vTaskSuspendAll assert for critical nesting count (#1029) * Accessing the critical nesting count in current task's TCB is performed with interrupt disabled to ensure atomicity. --- tasks.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasks.c b/tasks.c index b02616026..5cec846d0 100644 --- a/tasks.c +++ b/tasks.c @@ -3831,9 +3831,6 @@ void vTaskSuspendAll( void ) if( xSchedulerRunning != pdFALSE ) { - /* This must never be called from inside a critical section. */ - configASSERT( portGET_CRITICAL_NESTING_COUNT() == 0 ); - /* Writes to uxSchedulerSuspended must be protected by both the task AND ISR locks. * We must disable interrupts before we grab the locks in the event that this task is * interrupted and switches context before incrementing uxSchedulerSuspended. @@ -3841,6 +3838,9 @@ void vTaskSuspendAll( void ) * uxSchedulerSuspended since that will prevent context switches. */ ulState = portSET_INTERRUPT_MASK(); + /* This must never be called from inside a critical section. */ + configASSERT( portGET_CRITICAL_NESTING_COUNT() == 0 ); + /* portSOFRWARE_BARRIER() is only implemented for emulated/simulated ports that * do not otherwise exhibit real time behaviour. */ portSOFTWARE_BARRIER();