forked from espressif/esp-idf
refactor(freertos/smp): Move vTaskStartSchedulerOtherCores() to API additions to headers
- Move vTaskStartSchedulerOtherCores() - implementation to freertos_tasks_c_additions.h - declaration to freertos_idf_additions_priv.h as API is private - Rename vTaskStartSchedulerOtherCores() -> prvStartSchedulerOtherCores() to indicate that the function is private.
This commit is contained in:
@@ -3306,23 +3306,6 @@ void vTaskInternalSetTimeOutState( TimeOut_t * const pxTimeOut ) PRIVILEGED_FUNC
|
|||||||
*/
|
*/
|
||||||
void vTaskYieldWithinAPI( void );
|
void vTaskYieldWithinAPI( void );
|
||||||
|
|
||||||
/* ------------------------------------------------ IDF Compatibility --------------------------------------------------
|
|
||||||
*
|
|
||||||
* ------------------------------------------------------------------------------------------------------------------ */
|
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM
|
|
||||||
|
|
||||||
#if ( configNUM_CORES > 1 )
|
|
||||||
/*
|
|
||||||
Workaround for non-thread safe multi-core OS startup (see IDF-4524)
|
|
||||||
This function must be called with interrupts disabled on all cores other than
|
|
||||||
core 0 during startup.
|
|
||||||
*/
|
|
||||||
void vTaskStartSchedulerOtherCores( void );
|
|
||||||
#endif // configNUM_CORES > 1
|
|
||||||
|
|
||||||
#endif //ESP_PLATFORM
|
|
||||||
|
|
||||||
/* *INDENT-OFF* */
|
/* *INDENT-OFF* */
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
#include "xtensa/config/core.h"
|
#include "xtensa/config/core.h"
|
||||||
#include "xtensa/config/core-isa.h"
|
#include "xtensa/config/core-isa.h"
|
||||||
#include "xtensa/xtruntime.h"
|
#include "xtensa/xtruntime.h"
|
||||||
|
#include "esp_private/freertos_idf_additions_priv.h"
|
||||||
#include "esp_private/esp_int_wdt.h"
|
#include "esp_private/esp_int_wdt.h"
|
||||||
#include "esp_private/systimer.h"
|
#include "esp_private/systimer.h"
|
||||||
#include "esp_private/periph_ctrl.h"
|
#include "esp_private/periph_ctrl.h"
|
||||||
@@ -328,7 +329,7 @@ BaseType_t xPortStartScheduler( void )
|
|||||||
#if configNUM_CORES > 1
|
#if configNUM_CORES > 1
|
||||||
// Workaround for non-thread safe multi-core OS startup (see IDF-4524)
|
// Workaround for non-thread safe multi-core OS startup (see IDF-4524)
|
||||||
if (xPortGetCoreID() != 0) {
|
if (xPortGetCoreID() != 0) {
|
||||||
vTaskStartSchedulerOtherCores();
|
prvStartSchedulerOtherCores();
|
||||||
}
|
}
|
||||||
#endif // configNUM_CORES > 1
|
#endif // configNUM_CORES > 1
|
||||||
|
|
||||||
|
@@ -6506,14 +6506,3 @@ static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* if ( configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H == 1 ) */
|
#endif /* if ( configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H == 1 ) */
|
||||||
|
|
||||||
#if ( ( ESP_PLATFORM == 1 ) && ( configNUM_CORES > 1 ) )
|
|
||||||
/*
|
|
||||||
Workaround for non-thread safe multi-core OS startup (see IDF-4524)
|
|
||||||
*/
|
|
||||||
void vTaskStartSchedulerOtherCores( void )
|
|
||||||
{
|
|
||||||
/* This function is always called with interrupts disabled*/
|
|
||||||
xSchedulerRunning = pdTRUE;
|
|
||||||
}
|
|
||||||
#endif // ( ESP_PLATFORM == 1 ) && ( configNUM_CORES > 1
|
|
||||||
|
@@ -31,6 +31,22 @@ _Static_assert( offsetof( StaticTask_t, pxDummy8 ) == offsetof( TCB_t, pxEndOfSt
|
|||||||
_Static_assert( tskNO_AFFINITY == CONFIG_FREERTOS_NO_AFFINITY, "CONFIG_FREERTOS_NO_AFFINITY must be the same as tskNO_AFFINITY" );
|
_Static_assert( tskNO_AFFINITY == CONFIG_FREERTOS_NO_AFFINITY, "CONFIG_FREERTOS_NO_AFFINITY must be the same as tskNO_AFFINITY" );
|
||||||
#endif /* CONFIG_FREERTOS_SMP */
|
#endif /* CONFIG_FREERTOS_SMP */
|
||||||
|
|
||||||
|
/* ------------------------------------------------- Kernel Control ------------------------------------------------- */
|
||||||
|
|
||||||
|
#if ( CONFIG_FREERTOS_SMP && ( configNUM_CORES > 1 ) )
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Workaround for non-thread safe multi-core OS startup (see IDF-4524)
|
||||||
|
*/
|
||||||
|
void prvStartSchedulerOtherCores( void )
|
||||||
|
{
|
||||||
|
/* This function is always called with interrupts disabled*/
|
||||||
|
xSchedulerRunning = pdTRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* ( CONFIG_FREERTOS_SMP && ( configNUM_CORES > 1 ) ) */
|
||||||
|
/*----------------------------------------------------------*/
|
||||||
|
|
||||||
/* -------------------------------------------------- Task Creation ------------------------------------------------- */
|
/* -------------------------------------------------- Task Creation ------------------------------------------------- */
|
||||||
|
|
||||||
#if CONFIG_FREERTOS_SMP
|
#if CONFIG_FREERTOS_SMP
|
||||||
|
@@ -20,6 +20,22 @@
|
|||||||
#endif
|
#endif
|
||||||
/* *INDENT-ON* */
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
* KERNEL CONTROL (PRIVATE)
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( CONFIG_FREERTOS_SMP && ( configNUM_CORES > 1 ) )
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Workaround for non-thread safe multi-core OS startup (see IDF-4524)
|
||||||
|
*
|
||||||
|
* This function must be called with interrupts disabled on all cores other than
|
||||||
|
* core 0 during startup.
|
||||||
|
*/
|
||||||
|
void prvStartSchedulerOtherCores( void );
|
||||||
|
|
||||||
|
#endif /* ( CONFIG_FREERTOS_SMP && ( configNUM_CORES > 1 ) ) */
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------
|
/*------------------------------------------------------------------------------
|
||||||
* TASK UTILITIES (PRIVATE)
|
* TASK UTILITIES (PRIVATE)
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
Reference in New Issue
Block a user