From 49b89b2f2528b51be2b202d8d544db52d30248ed Mon Sep 17 00:00:00 2001 From: Sudeep Mohanty Date: Fri, 22 Aug 2025 17:12:08 +0200 Subject: [PATCH] feat(freertos-smp): Use light weight locks for preemption disable/enable --- tasks.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/tasks.c b/tasks.c index eb2c12c0d..43bb1ea76 100644 --- a/tasks.c +++ b/tasks.c @@ -3286,7 +3286,11 @@ static void prvInitialiseNewTask( TaskFunction_t pxTaskCode, traceENTER_vTaskPreemptionDisable( xTask ); - kernelENTER_CRITICAL(); + #if ( configLIGHTWEIGHT_CRITICAL_SECTION == 1 ) + vKernelLightWeightEnterCritical(); + #else + kernelENTER_CRITICAL(); + #endif { if( xSchedulerRunning != pdFALSE ) { @@ -3300,7 +3304,11 @@ static void prvInitialiseNewTask( TaskFunction_t pxTaskCode, mtCOVERAGE_TEST_MARKER(); } } - kernelEXIT_CRITICAL(); + #if ( configLIGHTWEIGHT_CRITICAL_SECTION == 1 ) + vKernelLightWeightExitCritical(); + #else + kernelEXIT_CRITICAL(); + #endif traceRETURN_vTaskPreemptionDisable(); } @@ -3316,7 +3324,11 @@ static void prvInitialiseNewTask( TaskFunction_t pxTaskCode, UBaseType_t uxDeferredAction = 0U; BaseType_t xAlreadyYielded = pdFALSE; - kernelENTER_CRITICAL(); + #if ( configLIGHTWEIGHT_CRITICAL_SECTION == 1 ) + vKernelLightWeightEnterCritical(); + #else + kernelENTER_CRITICAL(); + #endif { if( xSchedulerRunning != pdFALSE ) { @@ -3355,7 +3367,11 @@ static void prvInitialiseNewTask( TaskFunction_t pxTaskCode, mtCOVERAGE_TEST_MARKER(); } } - kernelEXIT_CRITICAL(); + #if ( configLIGHTWEIGHT_CRITICAL_SECTION == 1 ) + vKernelLightWeightExitCritical(); + #else + kernelEXIT_CRITICAL(); + #endif if( uxDeferredAction != 0U ) {