mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 13:01:57 -04:00
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.
This commit is contained in:
parent
73851fb6da
commit
4d4f8d0d50
6
tasks.c
6
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();
|
||||
|
|
Loading…
Reference in a new issue