diff --git a/portable/ThirdParty/GCC/Posix/port.c b/portable/ThirdParty/GCC/Posix/port.c index 086ad487a..108c1d95d 100644 --- a/portable/ThirdParty/GCC/Posix/port.c +++ b/portable/ThirdParty/GCC/Posix/port.c @@ -178,6 +178,7 @@ portBASE_TYPE xPortStartScheduler( void ) { int iSignal; sigset_t xSignals; +TaskHandle_t pxIdleThread; hMainThread = pthread_self(); @@ -185,6 +186,8 @@ sigset_t xSignals; Interrupts are disabled here already. */ prvSetupTimerInterrupt(); + pxIdleThread = xTaskGetIdleTaskHandle(); + /* Start the first task. */ vPortStartFirstTask(); @@ -197,6 +200,9 @@ sigset_t xSignals; sigwait( &xSignals, &iSignal ); } + /* Cancel the Idle task and free its resources */ + vPortCancelThread(pxIdleThread); + /* Restore original signal mask. */ (void)pthread_sigmask( SIG_SETMASK, &xSchedulerOriginalSignalMask, NULL );