فهرست منبع

Merge branch 'refactor/freertos_config_files' into 'master'

FreeRTOS: Combine FreeRTOSConfig.h

Closes IDF-6082

See merge request espressif/esp-idf!22815
Darian 2 سال پیش
والد
کامیت
c71025d6d6

+ 3 - 2
components/freertos/CMakeLists.txt

@@ -33,10 +33,11 @@ set(srcs
 
 set(include_dirs
     "${kernel_dir}/include" # FreeRTOS headers via #include "freertos/xxx.h"
-    "${kernel_dir}/portable/${arch}/include" # For arch-specific FreeRTOSConfig_arch.h in portable/<arch>/include
+    "${kernel_dir}/portable/${arch}/include" # For arch-specific #include "freertos/portmacro.h"
     "esp_additions/include/freertos"         # For files with #include "FreeRTOSConfig.h"
-    "esp_additions/include")                 # For files with #include "freertos/FreeRTOSConfig.h"
+    "esp_additions/include"                  # For files with #include "freertos/FreeRTOSConfig.h"
                                              #      or #include "freertos/task_snapshot.h"
+    "esp_additions/arch/${arch}/include")    # For #include "freertos/FreeRTOSConfig_arch.h"
 
 set(private_include_dirs
     "${kernel_dir}/portable/${arch}/include/freertos"

+ 0 - 274
components/freertos/FreeRTOS-Kernel-SMP/portable/riscv/include/freertos/FreeRTOSConfig_smp.h

@@ -1,274 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#ifndef FREERTOS_CONFIG_SMP_H
-#define FREERTOS_CONFIG_SMP_H
-
-#include "sdkconfig.h"
-
-/*
-This file get's pulled into assembly sources. Therefore, some includes need to be wrapped in #ifndef __ASSEMBLER__
-*/
-
-#ifndef __ASSEMBLER__
-#include <assert.h>         //For configASSERT()
-#endif /* def __ASSEMBLER__ */
-
-/* ------------------------------------------------ ESP-IDF Additions --------------------------------------------------
- *
- * ------------------------------------------------------------------------------------------------------------------ */
-
-#ifndef configISR_STACK_SIZE
-#define configISR_STACK_SIZE                                (CONFIG_FREERTOS_ISR_STACKSIZE)
-#endif
-
-/* ----------------------------------------------------- Helpers -------------------------------------------------------
- * - Macros that the FreeRTOS configuration macros depend on
- * ------------------------------------------------------------------------------------------------------------------ */
-
-/* Higher stack checker modes cause overhead on each function call */
-#if CONFIG_STACK_CHECK_ALL || CONFIG_STACK_CHECK_STRONG
-#define STACK_OVERHEAD_CHECKER                          256
-#else
-#define STACK_OVERHEAD_CHECKER                          0
-#endif
-
-/* with optimizations disabled, scheduler uses additional stack */
-#if CONFIG_COMPILER_OPTIMIZATION_NONE
-#define STACK_OVERHEAD_OPTIMIZATION                     320
-#else
-#define STACK_OVERHEAD_OPTIMIZATION                     0
-#endif
-
-/* apptrace mdule increases minimum stack usage */
-#if CONFIG_APPTRACE_ENABLE
-#define STACK_OVERHEAD_APPTRACE                         1280
-#else
-#define STACK_OVERHEAD_APPTRACE                         0
-#endif
-
-/* Stack watchpoint decreases minimum usable stack size by up to 60 bytes.
-   See FreeRTOS FREERTOS_WATCHPOINT_END_OF_STACK option in Kconfig. */
-#if CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK
-#define STACK_OVERHEAD_WATCHPOINT                       60
-#else
-#define STACK_OVERHEAD_WATCHPOINT                       0
-#endif
-
-#define configSTACK_OVERHEAD_TOTAL (                              \
-                                    STACK_OVERHEAD_CHECKER +      \
-                                    STACK_OVERHEAD_OPTIMIZATION + \
-                                    STACK_OVERHEAD_APPTRACE +     \
-                                    STACK_OVERHEAD_WATCHPOINT     \
-                                                            )
-
-/* ----------------------------------------------------- Helpers -------------------------------------------------------
- * - Macros that the FreeRTOS configuration macros depend on
- * ------------------------------------------------------------------------------------------------------------------ */
-
-
-/* ------------------------------------------------- FreeRTOS Config ---------------------------------------------------
- * - All Vanilla FreeRTOS configuration goes into this section
- * - Keep this section in-sync with the corresponding version of single-core upstream version of FreeRTOS
- * - Don't put any SMP or ESP-IDF exclusive FreeRTOS configurations here. Those go into the next section
- * - Not all FreeRTOS configuration are listed. Some configurations have default values set in FreeRTOS.h thus don't
- *   need to be explicitly defined.
- * ------------------------------------------------------------------------------------------------------------------ */
-
-/*-----------------------------------------------------------
- * Application specific definitions.
- *
- * These definitions should be adjusted for your particular hardware and
- * application requirements.
- *
- * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
- * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
- *
- * See http://www.freertos.org/a00110.html
- *----------------------------------------------------------*/
-
-// ------------------ Scheduler Related --------------------
-
-#define configUSE_PREEMPTION                            1
-#define configUSE_TASK_PREEMPTION_DISABLE               1
-#define configUSE_TICKLESS_IDLE                         0
-#define configCPU_CLOCK_HZ                              (CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ * 1000000)
-#define configTICK_RATE_HZ                              CONFIG_FREERTOS_HZ
-#define configMAX_PRIORITIES                            ( 25 )  //This has impact on speed of search for highest priority
-#define configMINIMAL_STACK_SIZE                        ( CONFIG_FREERTOS_IDLE_TASK_STACKSIZE + configSTACK_OVERHEAD_TOTAL )
-#define configUSE_TIME_SLICING                          1
-#define configUSE_16_BIT_TICKS                          0
-#define configIDLE_SHOULD_YIELD                         0   //Todo: Check this
-#define configKERNEL_INTERRUPT_PRIORITY                 1   //Todo: This currently isn't used anywhere
-#if __XTENSA__
-#define configMAX_API_CALL_INTERRUPT_PRIORITY           XCHAL_EXCM_LEVEL
-#else // RISC-V
-#define configMAX_API_CALL_INTERRUPT_PRIORITY           0
-#endif // __XTENSA__
-#define configUSE_PORT_OPTIMISED_TASK_SELECTION         0   //SMP currently does not support optimized selection
-
-// -------------------- FreeRTOS SMP -----------------------
-
-#ifdef CONFIG_FREERTOS_UNICORE
-#define configNUM_CORES                                 1
-#else
-#define configNUM_CORES                                 2
-#endif
-#define configUSE_CORE_AFFINITY                         1
-#define configRUN_MULTIPLE_PRIORITIES                   1
-#define configUSE_MINIMAL_IDLE_HOOK                     1   // This is always enabled to call IDF style idle hooks, by can be "--Wl,--wrap" if users enable CONFIG_FREERTOS_USE_MINIMAL_IDLE_HOOK
-
-// ------------- Synchronization Primitives ----------------
-
-#define configUSE_MUTEXES                               1
-#define configUSE_RECURSIVE_MUTEXES                     1
-#define configUSE_COUNTING_SEMAPHORES                   1
-#define configUSE_QUEUE_SETS                            1
-#define configQUEUE_REGISTRY_SIZE                       CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE
-#define configUSE_TASK_NOTIFICATIONS                    1
-#define configTASK_NOTIFICATION_ARRAY_ENTRIES           CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES
-
-// ----------------------- System --------------------------
-
-#define configMAX_TASK_NAME_LEN                         CONFIG_FREERTOS_MAX_TASK_NAME_LEN
-
-#if ( CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS )
-/* If thread local storage pointer deletion callbacks are registered
- * then we double the storage space reserved for the thread local
- * storage pointers in the task TCB. The first half of the storage area
- * is used to store the TLS pointers themselves while the second half
- * is used to store the respective deletion callbacks.
- */
-#define configNUM_THREAD_LOCAL_STORAGE_POINTERS         ( CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS * 2 )
-#else
-#define configNUM_THREAD_LOCAL_STORAGE_POINTERS         CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS
-#endif // CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS
-#define configSTACK_DEPTH_TYPE                          uint32_t
-#define configUSE_NEWLIB_REENTRANT                      1
-#define configNEWLIB_REENTRANT_IS_DYNAMIC               1   // IDF Newlib supports dynamic reentrancy.
-                                                            // We provide our own __getreent() function
-#define configENABLE_BACKWARD_COMPATIBILITY             0
-#define configASSERT(a)                                 assert(a)
-#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H       1
-
-// ----------------------- Memory  -------------------------
-
-#define configSUPPORT_STATIC_ALLOCATION                 1
-#define configSUPPORT_DYNAMIC_ALLOCATION                1
-//We define the heap to span all of the non-statically-allocated shared RAM. ToDo: Make sure there
-//is some space left for the app and main cpu when running outside of a thread.
-#define configTOTAL_HEAP_SIZE                           (&_heap_end - &_heap_start)//( ( size_t ) (64 * 1024) )
-#define configAPPLICATION_ALLOCATED_HEAP                1
-#define configSTACK_ALLOCATION_FROM_SEPARATE_HEAP       0   //Todo: Check this
-
-// ------------------------ Hooks --------------------------
-
-#if CONFIG_FREERTOS_USE_IDLE_HOOK
-#define configUSE_IDLE_HOOK                             1
-#else
-#define configUSE_IDLE_HOOK                             0
-#endif
-#define configUSE_TICK_HOOK                             1
-#if CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE
-#define configCHECK_FOR_STACK_OVERFLOW                  0
-#elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL
-#define configCHECK_FOR_STACK_OVERFLOW                  1
-#elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY
-#define configCHECK_FOR_STACK_OVERFLOW                  2
-#endif
-#define configRECORD_STACK_HIGH_ADDRESS                 1   // This must be set as the port requires TCB.pxEndOfStack
-
-// ------------------- Run-time Stats ----------------------
-
-#ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS
-#define configGENERATE_RUN_TIME_STATS                   1   /* Used by vTaskGetRunTimeStats() */
-#endif
-#ifdef CONFIG_FREERTOS_USE_TRACE_FACILITY
-#define configUSE_TRACE_FACILITY                        1   /* Used by uxTaskGetSystemState(), and other trace facility functions */
-#endif
-#ifdef CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS
-#define configUSE_STATS_FORMATTING_FUNCTIONS            1   /* Used by vTaskList() */
-#endif
-
-// -------------------- Co-routines  -----------------------
-
-#define configUSE_CO_ROUTINES                           0
-#define configMAX_CO_ROUTINE_PRIORITIES                 2
-
-// ------------------- Software Timer ----------------------
-
-#define configUSE_TIMERS                                1
-#define configTIMER_TASK_PRIORITY                       CONFIG_FREERTOS_TIMER_TASK_PRIORITY
-#define configTIMER_QUEUE_LENGTH                        CONFIG_FREERTOS_TIMER_QUEUE_LENGTH
-#define configTIMER_TASK_STACK_DEPTH                    CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH
-
-// -------------------- API Includes -----------------------
-
-#define configENABLE_BACKWARD_COMPATIBILITY             0
-
-#define INCLUDE_vTaskPrioritySet                        1
-#define INCLUDE_uxTaskPriorityGet                       1
-#define INCLUDE_vTaskDelete                             1
-#define INCLUDE_vTaskSuspend                            1
-#define INCLUDE_xTaskDelayUntil                         1
-#define INCLUDE_vTaskDelay                              1
-#define INCLUDE_xTaskGetIdleTaskHandle                  1
-#define INCLUDE_xTaskAbortDelay                         1
-#define INCLUDE_xSemaphoreGetMutexHolder                1
-#define INCLUDE_xTaskGetHandle                          1
-#define INCLUDE_uxTaskGetStackHighWaterMark             1
-#define INCLUDE_uxTaskGetStackHighWaterMark2            0
-#define INCLUDE_eTaskGetState                           1
-#define INCLUDE_xTaskResumeFromISR                      1
-#define INCLUDE_xTimerPendFunctionCall                  1
-#define INCLUDE_xTaskGetSchedulerState                  1
-#define INCLUDE_xTaskGetCurrentTaskHandle               1
-
-// -------------------- Trace Macros -----------------------
-
-/*
-For trace macros.
-Note: Include trace macros here and not above as trace macros are dependent on some of the FreeRTOS configs
-*/
-#ifndef __ASSEMBLER__
-#if CONFIG_SYSVIEW_ENABLE
-#include "SEGGER_SYSVIEW_FreeRTOS.h"
-#undef INLINE // to avoid redefinition
-#endif //CONFIG_SYSVIEW_ENABLE
-#endif /* def __ASSEMBLER__ */
-
-/*
-Default values for trace macros added by ESP-IDF and are not part of Vanilla FreeRTOS
-*/
-#ifndef traceISR_EXIT
-    #define traceISR_EXIT()
-#endif
-#ifndef traceISR_ENTER
-    #define traceISR_ENTER(_n_)
-#endif
-
-#ifndef traceQUEUE_GIVE_FROM_ISR
-    #define traceQUEUE_GIVE_FROM_ISR( pxQueue )
-#endif
-
-#ifndef traceQUEUE_GIVE_FROM_ISR_FAILED
-    #define traceQUEUE_GIVE_FROM_ISR_FAILED( pxQueue )
-#endif
-
-#ifndef traceQUEUE_SEMAPHORE_RECEIVE
-    #define traceQUEUE_SEMAPHORE_RECEIVE( pxQueue )
-#endif
-
-/* ------------------------------------------------ IDF Compatibility --------------------------------------------------
- * - We need these in order for ESP-IDF to compile
- * ------------------------------------------------------------------------------------------------------------------ */
-
-#define portNUM_PROCESSORS                              configNUM_CORES
-#ifdef CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID
-#define configTASKLIST_INCLUDE_COREID                   1
-#endif
-
-#endif /* FREERTOS_CONFIG_SMP_H */

+ 2 - 2
components/freertos/FreeRTOS-Kernel-SMP/portable/riscv/include/freertos/portmacro.h

@@ -205,7 +205,7 @@ extern void vTaskExitCritical( void );
 #define portALT_GET_RUN_TIME_COUNTER_VALUE(x)       do {x = (uint32_t)esp_timer_get_time();} while(0)
 #endif
 
-// ------------------- TCB Cleanup ----------------------
+// --------------------- TCB Cleanup -----------------------
 
 #define portCLEAN_UP_TCB( pxTCB )                   vPortCleanUpTCB( pxTCB )
 
@@ -315,7 +315,7 @@ bool xPortcheckValidStackMem(const void *ptr);
 
 /* ------------------------------------------------------ Misc ---------------------------------------------------------
  * - Miscellaneous porting macros
- * - These are not port of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components
+ * - These are not part of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components
  * ------------------------------------------------------------------------------------------------------------------ */
 
 // --------------------- App-Trace -------------------------

+ 0 - 315
components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos/FreeRTOSConfig_smp.h

@@ -1,315 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#ifndef FREERTOS_CONFIG_SMP_H
-#define FREERTOS_CONFIG_SMP_H
-
-#include "sdkconfig.h"
-
-/*
-This file get's pulled into assembly sources. Therefore, some includes need to be wrapped in #ifndef __ASSEMBLER__
-*/
-
-#ifndef __ASSEMBLER__
-#include <assert.h>         //For configASSERT()
-#endif /* def __ASSEMBLER__ */
-
-/* Required for configuration-dependent settings. */
-#include "xtensa_config.h"
-
-/* -------------------------------------------- Xtensa Additional Config  ----------------------------------------------
- * - Provide Xtensa definitions usually given by -D option when building with xt-make (see readme_xtensa.txt)
- * - xtensa_rtos.h and xtensa_timer.h will default some of these values
- *      - XT_SIMULATOR         configXT_SIMULATOR
- *      - XT_BOARD             configXT_BOARD
- *      - XT_CLOCK_FREQ        Should not be defined as we are using XT_BOARD mode
- *      - XT_TICK_PER_SEC      Defaults to configTICK_RATE_HZ
- *      - XT_TIMER_INDEX       Defaults to configXT_TIMER_INDEX
- *      - XT_INTEXC_HOOKS      Defaults to configXT_INTEXC_HOOKS
- *      - XT_USE_OVLY          We don't define this (unused)
- *      - XT_USE_SWPRI         We don't define this (unused)
- * ------------------------------------------------------------------------------------------------------------------ */
-
-#define configXT_SIMULATOR                                  0
-#define configXT_BOARD                                      1   /* Board mode */
-#if CONFIG_FREERTOS_CORETIMER_0
-#define configXT_TIMER_INDEX                                0
-#elif CONFIG_FREERTOS_CORETIMER_1
-#define configXT_TIMER_INDEX                                1
-#endif
-#define configXT_INTEXC_HOOKS                               0
-
-#define configBENCHMARK                                     0
-
-/* ------------------------------------------------ ESP-IDF Additions --------------------------------------------------
- *
- * ------------------------------------------------------------------------------------------------------------------ */
-
-/* The Xtensa port uses a separate interrupt stack. Adjust the stack size
- * to suit the needs of your specific application.
- * Size needs to be aligned to the stack increment, since the location of
- * the stack for the 2nd CPU will be calculated using configISR_STACK_SIZE.
- */
-#define configSTACK_ALIGNMENT                               16
-#ifndef configISR_STACK_SIZE
-#define configISR_STACK_SIZE                                ((CONFIG_FREERTOS_ISR_STACKSIZE + configSTACK_ALIGNMENT - 1) & (~(configSTACK_ALIGNMENT - 1)))
-#endif
-
-/* ----------------------------------------------------- Helpers -------------------------------------------------------
- * - Macros that the FreeRTOS configuration macros depend on
- * ------------------------------------------------------------------------------------------------------------------ */
-
-/* Higher stack checker modes cause overhead on each function call */
-#if CONFIG_STACK_CHECK_ALL || CONFIG_STACK_CHECK_STRONG
-#define STACK_OVERHEAD_CHECKER                          256
-#else
-#define STACK_OVERHEAD_CHECKER                          0
-#endif
-
-/* with optimizations disabled, scheduler uses additional stack */
-#if CONFIG_COMPILER_OPTIMIZATION_NONE
-#define STACK_OVERHEAD_OPTIMIZATION                     320
-#else
-#define STACK_OVERHEAD_OPTIMIZATION                     0
-#endif
-
-/* apptrace mdule increases minimum stack usage */
-#if CONFIG_APPTRACE_ENABLE
-#define STACK_OVERHEAD_APPTRACE                         1280
-#else
-#define STACK_OVERHEAD_APPTRACE                         0
-#endif
-
-/* Stack watchpoint decreases minimum usable stack size by up to 60 bytes.
-   See FreeRTOS FREERTOS_WATCHPOINT_END_OF_STACK option in Kconfig. */
-#if CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK
-#define STACK_OVERHEAD_WATCHPOINT                       60
-#else
-#define STACK_OVERHEAD_WATCHPOINT                       0
-#endif
-
-#define configSTACK_OVERHEAD_TOTAL (                              \
-                                    STACK_OVERHEAD_CHECKER +      \
-                                    STACK_OVERHEAD_OPTIMIZATION + \
-                                    STACK_OVERHEAD_APPTRACE +     \
-                                    STACK_OVERHEAD_WATCHPOINT     \
-                                                            )
-
-/* ----------------------------------------------------- Helpers -------------------------------------------------------
- * - Macros that the FreeRTOS configuration macros depend on
- * ------------------------------------------------------------------------------------------------------------------ */
-
-
-/* ------------------------------------------------- FreeRTOS Config ---------------------------------------------------
- * - All Vanilla FreeRTOS configuration goes into this section
- * - Keep this section in-sync with the corresponding version of single-core upstream version of FreeRTOS
- * - Don't put any SMP or ESP-IDF exclusive FreeRTOS configurations here. Those go into the next section
- * - Not all FreeRTOS configuration are listed. Some configurations have default values set in FreeRTOS.h thus don't
- *   need to be explicitly defined.
- * ------------------------------------------------------------------------------------------------------------------ */
-
-/*-----------------------------------------------------------
- * Application specific definitions.
- *
- * These definitions should be adjusted for your particular hardware and
- * application requirements.
- *
- * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
- * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
- *
- * See http://www.freertos.org/a00110.html
- *----------------------------------------------------------*/
-
-// ------------------ Scheduler Related --------------------
-
-#define configUSE_PREEMPTION                            1
-#define configUSE_TASK_PREEMPTION_DISABLE               1
-#define configUSE_TICKLESS_IDLE                         0
-#define configCPU_CLOCK_HZ                              (CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ * 1000000)
-#define configTICK_RATE_HZ                              CONFIG_FREERTOS_HZ
-#define configMAX_PRIORITIES                            ( 25 )  //This has impact on speed of search for highest priority
-#define configMINIMAL_STACK_SIZE                        ( CONFIG_FREERTOS_IDLE_TASK_STACKSIZE + configSTACK_OVERHEAD_TOTAL )
-#define configUSE_TIME_SLICING                          1
-#define configUSE_16_BIT_TICKS                          0
-#define configIDLE_SHOULD_YIELD                         0   //Todo: Check this
-#define configKERNEL_INTERRUPT_PRIORITY                 1   //Todo: This currently isn't used anywhere
-#define configMAX_API_CALL_INTERRUPT_PRIORITY           XCHAL_EXCM_LEVEL
-#define configUSE_PORT_OPTIMISED_TASK_SELECTION         0   //SMP currently does not support optimized selection
-
-// -------------------- FreeRTOS SMP -----------------------
-
-#ifdef CONFIG_FREERTOS_UNICORE
-#define configNUM_CORES                                 1
-#else
-#define configNUM_CORES                                 2
-#endif
-#define configUSE_CORE_AFFINITY                         1
-#define configRUN_MULTIPLE_PRIORITIES                   1
-#define configUSE_MINIMAL_IDLE_HOOK                     1   // This is always enabled to call IDF style idle hooks, by can be "--Wl,--wrap" if users enable CONFIG_FREERTOS_USE_MINIMAL_IDLE_HOOK
-
-// ------------- Synchronization Primitives ----------------
-
-#define configUSE_MUTEXES                               1
-#define configUSE_RECURSIVE_MUTEXES                     1
-#define configUSE_COUNTING_SEMAPHORES                   1
-#define configUSE_QUEUE_SETS                            1
-#define configQUEUE_REGISTRY_SIZE                       CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE
-#define configUSE_TASK_NOTIFICATIONS                    1
-#define configTASK_NOTIFICATION_ARRAY_ENTRIES           CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES
-
-// ----------------------- System --------------------------
-
-#define configMAX_TASK_NAME_LEN                         CONFIG_FREERTOS_MAX_TASK_NAME_LEN
-
-#if ( CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS )
-/* If thread local storage pointer deletion callbacks are registered
- * then we double the storage space reserved for the thread local
- * storage pointers in the task TCB. The first half of the storage area
- * is used to store the TLS pointers themselves while the second half
- * is used to store the respective deletion callbacks.
- */
-#define configNUM_THREAD_LOCAL_STORAGE_POINTERS         ( CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS * 2 )
-#else
-#define configNUM_THREAD_LOCAL_STORAGE_POINTERS         CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS
-#endif // CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS
-#define configSTACK_DEPTH_TYPE                          uint32_t
-#define configUSE_NEWLIB_REENTRANT                      1
-#define configNEWLIB_REENTRANT_IS_DYNAMIC               1   // IDF Newlib supports dynamic reentrancy. We provide our own __getreent() function
-#define configENABLE_BACKWARD_COMPATIBILITY             0
-#define configASSERT(a)                                 assert(a)
-#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H       1
-
-// ----------------------- Memory  -------------------------
-
-#define configSUPPORT_STATIC_ALLOCATION                 1
-#define configSUPPORT_DYNAMIC_ALLOCATION                1
-//We define the heap to span all of the non-statically-allocated shared RAM. ToDo: Make sure there
-//is some space left for the app and main cpu when running outside of a thread.
-#define configTOTAL_HEAP_SIZE                           (&_heap_end - &_heap_start)//( ( size_t ) (64 * 1024) )
-#define configAPPLICATION_ALLOCATED_HEAP                1
-#define configSTACK_ALLOCATION_FROM_SEPARATE_HEAP       0   //Todo: Check this
-
-// ------------------------ Hooks --------------------------
-
-#if CONFIG_FREERTOS_USE_IDLE_HOOK
-#define configUSE_IDLE_HOOK                             1
-#else
-#define configUSE_IDLE_HOOK                             0
-#endif
-#if CONFIG_FREERTOS_USE_TICK_HOOK
-#define configUSE_TICK_HOOK                             1
-#else
-#define configUSE_TICK_HOOK                             0
-#endif
-#if CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE
-#define configCHECK_FOR_STACK_OVERFLOW                  0
-#elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL
-#define configCHECK_FOR_STACK_OVERFLOW                  1
-#elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY
-#define configCHECK_FOR_STACK_OVERFLOW                  2
-#endif
-#define configRECORD_STACK_HIGH_ADDRESS                 1   // This must be set as the port requires TCB.pxEndOfStack
-
-// ------------------- Run-time Stats ----------------------
-
-#ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS
-#define configGENERATE_RUN_TIME_STATS                   1   /* Used by vTaskGetRunTimeStats() */
-#endif
-#ifdef CONFIG_FREERTOS_USE_TRACE_FACILITY
-#define configUSE_TRACE_FACILITY                        1   /* Used by uxTaskGetSystemState(), and other trace facility functions */
-#endif
-#ifdef CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS
-#define configUSE_STATS_FORMATTING_FUNCTIONS            1   /* Used by vTaskList() */
-#endif
-
-// -------------------- Co-routines  -----------------------
-
-#define configUSE_CO_ROUTINES                           0
-#define configMAX_CO_ROUTINE_PRIORITIES                 2
-
-// ------------------- Software Timer ----------------------
-
-#define configUSE_TIMERS                                1
-#define configTIMER_TASK_PRIORITY                       CONFIG_FREERTOS_TIMER_TASK_PRIORITY
-#define configTIMER_QUEUE_LENGTH                        CONFIG_FREERTOS_TIMER_QUEUE_LENGTH
-#define configTIMER_TASK_STACK_DEPTH                    CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH
-
-// -------------------- API Includes -----------------------
-
-#define configENABLE_BACKWARD_COMPATIBILITY             0
-
-#define INCLUDE_vTaskPrioritySet                        1
-#define INCLUDE_uxTaskPriorityGet                       1
-#define INCLUDE_vTaskDelete                             1
-#define INCLUDE_vTaskSuspend                            1
-#define INCLUDE_xTaskDelayUntil                         1
-#define INCLUDE_vTaskDelay                              1
-#define INCLUDE_xTaskGetIdleTaskHandle                  1
-#define INCLUDE_xTaskAbortDelay                         1
-#define INCLUDE_xSemaphoreGetMutexHolder                1
-#define INCLUDE_xTaskGetHandle                          1
-#define INCLUDE_uxTaskGetStackHighWaterMark             1
-#define INCLUDE_uxTaskGetStackHighWaterMark2            0
-#define INCLUDE_eTaskGetState                           1
-#define INCLUDE_xTaskResumeFromISR                      1
-#define INCLUDE_xTimerPendFunctionCall                  1
-#define INCLUDE_xTaskGetSchedulerState                  1
-#define INCLUDE_xTaskGetCurrentTaskHandle               1
-
-// -------------------- Trace Macros -----------------------
-
-/*
-For trace macros.
-Note: Include trace macros here and not above as trace macros are dependent on some of the FreeRTOS configs
-*/
-#ifndef __ASSEMBLER__
-#if CONFIG_SYSVIEW_ENABLE
-#include "SEGGER_SYSVIEW_FreeRTOS.h"
-#undef INLINE // to avoid redefinition
-#endif //CONFIG_SYSVIEW_ENABLE
-#endif /* def __ASSEMBLER__ */
-
-/*
-Default values for trace macros added by ESP-IDF and are not part of Vanilla FreeRTOS
-*/
-#ifndef traceISR_EXIT
-    #define traceISR_EXIT()
-#endif
-#ifndef traceISR_ENTER
-    #define traceISR_ENTER(_n_)
-#endif
-
-#ifndef traceQUEUE_GIVE_FROM_ISR
-    #define traceQUEUE_GIVE_FROM_ISR( pxQueue )
-#endif
-
-#ifndef traceQUEUE_GIVE_FROM_ISR_FAILED
-    #define traceQUEUE_GIVE_FROM_ISR_FAILED( pxQueue )
-#endif
-
-#ifndef traceQUEUE_SEMAPHORE_RECEIVE
-    #define traceQUEUE_SEMAPHORE_RECEIVE( pxQueue )
-#endif
-
-/* ------------------------------------------------ IDF Compatibility --------------------------------------------------
- * - We need these in order for ESP-IDF to compile
- * ------------------------------------------------------------------------------------------------------------------ */
-
-#define portNUM_PROCESSORS                              configNUM_CORES
-#ifdef CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID
-#define configTASKLIST_INCLUDE_COREID                   1
-#endif
-
-#ifndef __ASSEMBLER__
-#if CONFIG_APPTRACE_SV_ENABLE
-extern volatile uint32_t port_switch_flag[portNUM_PROCESSORS];
-#define os_task_switch_is_pended(_cpu_) (port_switch_flag[_cpu_])
-#else
-#define os_task_switch_is_pended(_cpu_) (false)
-#endif
-#endif
-
-#endif /* FREERTOS_CONFIG_SMP_H */

+ 14 - 0
components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos/portmacro.h

@@ -379,6 +379,20 @@ bool xPortcheckValidStackMem(const void *ptr);
 #define portVALID_TCB_MEM(ptr)      xPortCheckValidTCBMem(ptr)
 #define portVALID_STACK_MEM(ptr)    xPortcheckValidStackMem(ptr)
 
+/* ------------------------------------------------------ Misc ---------------------------------------------------------
+ * - Miscellaneous porting macros
+ * - These are not part of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components
+ * ------------------------------------------------------------------------------------------------------------------ */
+
+// --------------------- App-Trace -------------------------
+
+#if CONFIG_APPTRACE_SV_ENABLE
+extern volatile BaseType_t xPortSwitchFlag;
+#define os_task_switch_is_pended(_cpu_) (xPortSwitchFlag)
+#else
+#define os_task_switch_is_pended(_cpu_) (false)
+#endif
+
 // --------------- Compatibility Includes ------------------
 /*
 ESP-IDF currently does not have a "Include what you use" policy. A lot of files implicitly pull in API through

+ 0 - 12
components/freertos/FreeRTOS-Kernel/portable/linux/include/freertos/FreeRTOSConfig_arch.h

@@ -1,12 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#ifndef FREERTOS_CONFIG_LINUX_H
-#define FREERTOS_CONFIG_LINUX_H
-
-// This file is included in the common FreeRTOSConfig.h.
-
-#endif // FREERTOS_CONFIG_LINUX_H

+ 0 - 35
components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos/FreeRTOSConfig_arch.h

@@ -1,35 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#ifndef FREERTOS_CONFIG_RISCV_H
-#define FREERTOS_CONFIG_RISCV_H
-
-//RISC-V Archiecture specific configuration. This file is included in the common FreeRTOSConfig.h.
-
-#include "sdkconfig.h"
-
-/* ------------------------------------------------- FreeRTOS Config ---------------------------------------------------
- * - All Vanilla FreeRTOS configuration goes into this section
- * ------------------------------------------------------------------------------------------------------------------ */
-
-// ------------------ Scheduler Related --------------------
-
-#ifdef CONFIG_FREERTOS_OPTIMIZED_SCHEDULER
-#define configUSE_PORT_OPTIMISED_TASK_SELECTION             1
-#else
-#define configUSE_PORT_OPTIMISED_TASK_SELECTION             0
-#endif
-#define configMAX_API_CALL_INTERRUPT_PRIORITY               0
-
-/* ------------------------------------------------ ESP-IDF Additions --------------------------------------------------
- *
- * ------------------------------------------------------------------------------------------------------------------ */
-
-#ifndef configISR_STACK_SIZE
-#define configISR_STACK_SIZE                                (CONFIG_FREERTOS_ISR_STACKSIZE)
-#endif
-
-#endif // FREERTOS_CONFIG_RISCV_H

+ 9 - 1
components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos/portmacro.h

@@ -385,6 +385,14 @@ FORCE_INLINE_ATTR BaseType_t xPortGetCoreID(void)
 #define portALT_GET_RUN_TIME_COUNTER_VALUE(x)    do {x = (uint32_t)esp_timer_get_time();} while(0)
 #endif
 
+// --------------------- TCB Cleanup -----------------------
+
+#if CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP
+/* If enabled, users must provide an implementation of vPortCleanUpTCB() */
+extern void vPortCleanUpTCB ( void *pxTCB );
+#define portCLEAN_UP_TCB( pxTCB )                   vPortCleanUpTCB( pxTCB )
+#endif /* CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP */
+
 // -------------- Optimized Task Selection -----------------
 
 #if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1
@@ -424,7 +432,7 @@ FORCE_INLINE_ATTR bool xPortCanYield(void)
 
 /* ------------------------------------------------------ Misc ---------------------------------------------------------
  * - Miscellaneous porting macros
- * - These are not port of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components
+ * - These are not part of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components
  * ------------------------------------------------------------------------------------------------------------------ */
 
 // -------------------- Heap Related -----------------------

+ 9 - 1
components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/portmacro.h

@@ -523,6 +523,14 @@ extern void _frxt_setup_switch( void );     //Defined in portasm.S
 #define portALT_GET_RUN_TIME_COUNTER_VALUE(x) do {x = (uint32_t)esp_timer_get_time();} while(0)
 #endif
 
+// --------------------- TCB Cleanup -----------------------
+
+#if CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP
+/* If enabled, users must provide an implementation of vPortCleanUpTCB() */
+extern void vPortCleanUpTCB ( void *pxTCB );
+#define portCLEAN_UP_TCB( pxTCB )                   vPortCleanUpTCB( pxTCB )
+#endif /* CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP */
+
 // -------------- Optimized Task Selection -----------------
 
 #if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1
@@ -627,7 +635,7 @@ FORCE_INLINE_ATTR BaseType_t xPortGetCoreID(void)
 
 /* ------------------------------------------------------ Misc ---------------------------------------------------------
  * - Miscellaneous porting macros
- * - These are not port of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components
+ * - These are not part of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components
  * ------------------------------------------------------------------------------------------------------------------ */
 
 // -------------------- Co-Processor -----------------------

+ 1 - 1
components/freertos/Kconfig

@@ -40,7 +40,7 @@ menu "FreeRTOS"
         config FREERTOS_OPTIMIZED_SCHEDULER
             # Todo: Not available in SMP FREERTOS (IDF-3733)
             bool "configUSE_PORT_OPTIMISED_TASK_SELECTION"
-            depends on FREERTOS_UNICORE
+            depends on FREERTOS_UNICORE && !FREERTOS_SMP
             default y
             help
                 Enables port specific task selection method. This option can speed up the search of ready tasks

+ 52 - 0
components/freertos/esp_additions/arch/linux/include/freertos/FreeRTOSConfig_arch.h

@@ -0,0 +1,52 @@
+/*
+ * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#pragma once
+
+/* Linux POSIX simulator specific configuration. This file is included in the common FreeRTOSConfig.h. */
+
+#include "sdkconfig.h"
+
+/* ------------------------------------------------- FreeRTOS Config ---------------------------------------------------
+ * - All Vanilla FreeRTOS configuration goes into this section
+ * - Match upstream POSIX simulator example FreeRTOSConfig.h where possible. See following link for more details.
+ *   https://github.com/FreeRTOS/FreeRTOS/blob/main/FreeRTOS/Demo/Posix_GCC/FreeRTOSConfig.h
+ * ------------------------------------------------------------------------------------------------------------------ */
+
+/* ------------------ Scheduler Related -------------------- */
+
+#define configMAX_PRIORITIES                       ( 7 )
+#define configUSE_PORT_OPTIMISED_TASK_SELECTION    0
+
+/* The stack allocated by FreeRTOS will be passed to a pthread.
+ * pthread has a minimal stack size which currently is 16KB.
+ * The rest is for additional structures of the POSIX/Linux port.
+ * This is a magic number since PTHREAD_STACK_MIN seems to not be a constant. */
+#define configMINIMAL_STACK_SIZE                   ( ( unsigned short ) ( 0x4000 + 40 ) / sizeof( portSTACK_TYPE ) )
+/* Currently not used in Linux POSIX simulator */
+#define configMAX_API_CALL_INTERRUPT_PRIORITY      0
+
+/* ----------------------- System -------------------------- */
+
+#define configUSE_NEWLIB_REENTRANT                   0
+#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H    0
+
+/* ----------------------- Memory  ------------------------- */
+
+#define configTOTAL_HEAP_SIZE    ( ( size_t ) ( 65 * 1024 ) )
+
+/* ------------------- Run-time Stats ---------------------- */
+
+#define configUSE_TRACE_FACILITY    1
+
+/* -------------------- API Includes ----------------------- */
+
+#define INCLUDE_xTaskGetCurrentTaskHandle    0                /* not defined in POSIX simulator */
+#define INCLUDE_vTaskDelayUntil              1
+
+/* ------------------------------------------------ ESP-IDF Additions --------------------------------------------------
+ *
+ * ------------------------------------------------------------------------------------------------------------------ */

+ 58 - 0
components/freertos/esp_additions/arch/riscv/include/freertos/FreeRTOSConfig_arch.h

@@ -0,0 +1,58 @@
+/*
+ * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#pragma once
+
+/* RISC-V Architecture specific configuration. This file is included in the common FreeRTOSConfig.h. */
+
+#include "sdkconfig.h"
+
+/* ------------------------------------------------- FreeRTOS Config ---------------------------------------------------
+ * - All Vanilla FreeRTOS configuration goes into this section
+ * ------------------------------------------------------------------------------------------------------------------ */
+
+/* ------------------ Scheduler Related -------------------- */
+
+#define configMAX_PRIORITIES                           ( 25 )
+#ifdef CONFIG_FREERTOS_OPTIMIZED_SCHEDULER
+    #define configUSE_PORT_OPTIMISED_TASK_SELECTION    1
+#else
+    #define configUSE_PORT_OPTIMISED_TASK_SELECTION    0
+#endif /* CONFIG_FREERTOS_OPTIMIZED_SCHEDULER */
+#define configMINIMAL_STACK_SIZE                       ( CONFIG_FREERTOS_IDLE_TASK_STACKSIZE + configSTACK_OVERHEAD_TOTAL )
+#define configMAX_API_CALL_INTERRUPT_PRIORITY          0
+
+/* ----------------------- System -------------------------- */
+
+#define configUSE_NEWLIB_REENTRANT                   1
+#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H    1
+
+/* ----------------------- Memory  ------------------------- */
+
+/* This isn't used as FreeRTOS will only allocate from internal memory (see
+ * heap_idf.c). We simply define this macro to span all non-statically-allocated
+ * shared RAM. */
+#define configTOTAL_HEAP_SIZE    ( &_heap_end - &_heap_start )
+
+/* ------------------- Run-time Stats ---------------------- */
+
+#if CONFIG_FREERTOS_USE_TRACE_FACILITY
+    /* Used by uxTaskGetSystemState(), and other trace facility functions */
+    #define configUSE_TRACE_FACILITY    1
+#endif /* CONFIG_FREERTOS_USE_TRACE_FACILITY */
+
+/* -------------------- API Includes ----------------------- */
+
+#define INCLUDE_xTaskDelayUntil              1
+#define INCLUDE_xTaskGetCurrentTaskHandle    1
+
+/* ------------------------------------------------ ESP-IDF Additions --------------------------------------------------
+ *
+ * ------------------------------------------------------------------------------------------------------------------ */
+
+#ifndef configISR_STACK_SIZE
+    #define configISR_STACK_SIZE    ( CONFIG_FREERTOS_ISR_STACKSIZE )
+#endif

+ 43 - 20
components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/FreeRTOSConfig_arch.h → components/freertos/esp_additions/arch/xtensa/include/freertos/FreeRTOSConfig_arch.h

@@ -1,18 +1,17 @@
 /*
- * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
+ * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
  *
  * SPDX-License-Identifier: Apache-2.0
  */
 
-#ifndef FREERTOS_CONFIG_XTENSA_H
-#define FREERTOS_CONFIG_XTENSA_H
+#pragma once
 
-//Xtensa Archiecture specific configuration. This file is included in the common FreeRTOSConfig.h.
+/* Xtensa Architecture specific configuration. This file is included in the common FreeRTOSConfig.h. */
 
 #include "sdkconfig.h"
 
 /* Required for configuration-dependent settings. */
-#include "xtensa_config.h"
+#include "freertos/xtensa_config.h"
 
 /* -------------------------------------------- Xtensa Additional Config  ----------------------------------------------
  * - Provide Xtensa definitions usually given by -D option when building with xt-make (see readme_xtensa.txt)
@@ -27,29 +26,55 @@
  *      - XT_USE_SWPRI         We don't define this (unused)
  * ------------------------------------------------------------------------------------------------------------------ */
 
-#define configXT_SIMULATOR                                  0
-#define configXT_BOARD                                      1   /* Board mode */
+#define configXT_SIMULATOR          0
+#define configXT_BOARD              1                           /* Board mode */
 #if CONFIG_FREERTOS_CORETIMER_0
-#define configXT_TIMER_INDEX                                0
+    #define configXT_TIMER_INDEX    0
 #elif CONFIG_FREERTOS_CORETIMER_1
-#define configXT_TIMER_INDEX                                1
+    #define configXT_TIMER_INDEX    1
 #endif
-#define configXT_INTEXC_HOOKS                               0
+#define configXT_INTEXC_HOOKS       0
 
-#define configBENCHMARK                                     0
+#define configBENCHMARK             0
 
 /* ------------------------------------------------- FreeRTOS Config ---------------------------------------------------
  * - All Vanilla FreeRTOS configuration goes into this section
  * ------------------------------------------------------------------------------------------------------------------ */
 
-// ------------------ Scheduler Related --------------------
+/* ------------------ Scheduler Related -------------------- */
 
+#define configMAX_PRIORITIES                           ( 25 )
 #ifdef CONFIG_FREERTOS_OPTIMIZED_SCHEDULER
-#define configUSE_PORT_OPTIMISED_TASK_SELECTION             1
+    #define configUSE_PORT_OPTIMISED_TASK_SELECTION    1
 #else
-#define configUSE_PORT_OPTIMISED_TASK_SELECTION             0
-#endif
-#define configMAX_API_CALL_INTERRUPT_PRIORITY               XCHAL_EXCM_LEVEL
+    #define configUSE_PORT_OPTIMISED_TASK_SELECTION    0
+#endif /* CONFIG_FREERTOS_OPTIMIZED_SCHEDULER */
+#define configMINIMAL_STACK_SIZE                       ( CONFIG_FREERTOS_IDLE_TASK_STACKSIZE + configSTACK_OVERHEAD_TOTAL )
+#define configMAX_API_CALL_INTERRUPT_PRIORITY          XCHAL_EXCM_LEVEL
+
+/* ----------------------- System -------------------------- */
+
+#define configUSE_NEWLIB_REENTRANT                   1
+#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H    1
+
+/* ----------------------- Memory  ------------------------- */
+
+/* This isn't used as FreeRTOS will only allocate from internal memory (see
+ * heap_idf.c). We simply define this macro to span all non-statically-allocated
+ * shared RAM. */
+#define configTOTAL_HEAP_SIZE    ( &_heap_end - &_heap_start )
+
+/* ------------------- Run-time Stats ---------------------- */
+
+#if CONFIG_FREERTOS_USE_TRACE_FACILITY
+    /* Used by uxTaskGetSystemState(), and other trace facility functions */
+    #define configUSE_TRACE_FACILITY    1
+#endif /* CONFIG_FREERTOS_USE_TRACE_FACILITY */
+
+/* -------------------- API Includes ----------------------- */
+
+#define INCLUDE_xTaskDelayUntil              1
+#define INCLUDE_xTaskGetCurrentTaskHandle    1
 
 /* ------------------------------------------------ ESP-IDF Additions --------------------------------------------------
  *
@@ -60,9 +85,7 @@
  * Size needs to be aligned to the stack increment, since the location of
  * the stack for the 2nd CPU will be calculated using configISR_STACK_SIZE.
  */
-#define configSTACK_ALIGNMENT                               16
+#define configSTACK_ALIGNMENT       16
 #ifndef configISR_STACK_SIZE
-#define configISR_STACK_SIZE                                ((CONFIG_FREERTOS_ISR_STACKSIZE + configSTACK_ALIGNMENT - 1) & (~(configSTACK_ALIGNMENT - 1)))
+    #define configISR_STACK_SIZE    ( ( CONFIG_FREERTOS_ISR_STACKSIZE + configSTACK_ALIGNMENT - 1 ) & ( ~( configSTACK_ALIGNMENT - 1 ) ) )
 #endif
-
-#endif // FREERTOS_CONFIG_XTENSA_H

+ 213 - 216
components/freertos/esp_additions/include/freertos/FreeRTOSConfig.h

@@ -4,285 +4,282 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-#ifndef FREERTOS_CONFIG_H
-#define FREERTOS_CONFIG_H
+#pragma once
 
 #include "sdkconfig.h"
 
-/*
-This file gets pulled into assembly sources. Therefore, some includes need to be wrapped in #ifndef __ASSEMBLER__
-*/
+/* This file gets pulled into assembly sources. Therefore, some includes need to
+ * be wrapped in #ifndef __ASSEMBLER__ */
 
 #ifndef __ASSEMBLER__
-#include <assert.h>         //For configASSERT()
+    /* For configASSERT() */
+    #include <assert.h>
 #endif /* def __ASSEMBLER__ */
 
-#ifdef CONFIG_FREERTOS_SMP
-
-// Pull in the SMP configuration
-#include "freertos/FreeRTOSConfig_smp.h"
-
-#else // CONFIG_FREERTOS_SMP
-
-// The arch-specific FreeRTOSConfig_arch.h in port/<arch>/include.
-#include "freertos/FreeRTOSConfig_arch.h"
-
-#if !(defined(FREERTOS_CONFIG_XTENSA_H) \
-        || defined(FREERTOS_CONFIG_RISCV_H) \
-        || defined(FREERTOS_CONFIG_LINUX_H))
-#error "Needs architecture-speific FreeRTOSConfig.h!"
-#endif
-
 /* ----------------------------------------------------- Helpers -------------------------------------------------------
  * - Macros that the FreeRTOS configuration macros depend on
  * ------------------------------------------------------------------------------------------------------------------ */
 
 /* Higher stack checker modes cause overhead on each function call */
 #if CONFIG_STACK_CHECK_ALL || CONFIG_STACK_CHECK_STRONG
-#define STACK_OVERHEAD_CHECKER                          256
+    #define STACK_OVERHEAD_CHECKER    256
 #else
-#define STACK_OVERHEAD_CHECKER                          0
+    #define STACK_OVERHEAD_CHECKER    0
 #endif
 
 /* with optimizations disabled, scheduler uses additional stack */
 #if CONFIG_COMPILER_OPTIMIZATION_NONE
-#define STACK_OVERHEAD_OPTIMIZATION                     320
+    #define STACK_OVERHEAD_OPTIMIZATION    320
 #else
-#define STACK_OVERHEAD_OPTIMIZATION                     0
+    #define STACK_OVERHEAD_OPTIMIZATION    0
 #endif
 
 /* apptrace mdule increases minimum stack usage */
 #if CONFIG_APPTRACE_ENABLE
-#define STACK_OVERHEAD_APPTRACE                         1280
+    #define STACK_OVERHEAD_APPTRACE    1280
 #else
-#define STACK_OVERHEAD_APPTRACE                         0
+    #define STACK_OVERHEAD_APPTRACE    0
 #endif
 
 /* Stack watchpoint decreases minimum usable stack size by up to 60 bytes.
-   See FreeRTOS FREERTOS_WATCHPOINT_END_OF_STACK option in Kconfig. */
+ * See FreeRTOS FREERTOS_WATCHPOINT_END_OF_STACK option in Kconfig. */
 #if CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK
-#define STACK_OVERHEAD_WATCHPOINT                       60
+    #define STACK_OVERHEAD_WATCHPOINT    60
 #else
-#define STACK_OVERHEAD_WATCHPOINT                       0
+    #define STACK_OVERHEAD_WATCHPOINT    0
 #endif
 
-#define configSTACK_OVERHEAD_TOTAL (                              \
-                                    STACK_OVERHEAD_CHECKER +      \
-                                    STACK_OVERHEAD_OPTIMIZATION + \
-                                    STACK_OVERHEAD_APPTRACE +     \
-                                    STACK_OVERHEAD_WATCHPOINT     \
-                                                            )
+#define configSTACK_OVERHEAD_TOTAL    \
+    (                                 \
+        STACK_OVERHEAD_CHECKER +      \
+        STACK_OVERHEAD_OPTIMIZATION + \
+        STACK_OVERHEAD_APPTRACE +     \
+        STACK_OVERHEAD_WATCHPOINT     \
+    )
+
+/* The arch-specific FreeRTOSConfig_arch.h in esp_additions/arch_include/<arch>.
+ * Placed here due to configSTACK_OVERHEAD_TOTAL. Todo: IDF-5712. */
+#include "freertos/FreeRTOSConfig_arch.h"
 
 /* ------------------------------------------------- FreeRTOS Config ---------------------------------------------------
  * - All Vanilla FreeRTOS configuration goes into this section
  * - Keep this section in-sync with the corresponding version of single-core upstream version of FreeRTOS
- * - Don't put any SMP or ESP-IDF exclusive FreeRTOS configurations here. Those go into the next section
+ * - Don't put any Amazon SMP FreeRTOS or IDF FreeRTOS configurations here. Those go into the next section
  * - Not all FreeRTOS configuration are listed. Some configurations have default values set in FreeRTOS.h thus don't
  *   need to be explicitly defined.
  * ------------------------------------------------------------------------------------------------------------------ */
 
 /*-----------------------------------------------------------
- * Application specific definitions.
- *
- * These definitions should be adjusted for your particular hardware and
- * application requirements.
- *
- * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
- * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
- *
- * See http://www.freertos.org/a00110.html
- *----------------------------------------------------------*/
-
-// ------------------ Scheduler Related --------------------
-
-#define configUSE_PREEMPTION                            1
-#define configUSE_TICKLESS_IDLE                         CONFIG_FREERTOS_USE_TICKLESS_IDLE
+* Application specific definitions.
+*
+* These definitions should be adjusted for your particular hardware and
+* application requirements.
+*
+* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
+* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
+*
+* See http://www.freertos.org/a00110.html
+*----------------------------------------------------------*/
+
+/* ------------------ Scheduler Related -------------------- */
+
+#define configUSE_PREEMPTION                         1
+#define configUSE_TICKLESS_IDLE                      CONFIG_FREERTOS_USE_TICKLESS_IDLE
 #if configUSE_TICKLESS_IDLE
-#define configEXPECTED_IDLE_TIME_BEFORE_SLEEP           CONFIG_FREERTOS_IDLE_TIME_BEFORE_SLEEP
-#endif //configUSE_TICKLESS_IDLE
-#define configCPU_CLOCK_HZ                              (CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ * 1000000)
-#define configTICK_RATE_HZ                              CONFIG_FREERTOS_HZ
-#ifdef CONFIG_IDF_TARGET_LINUX
-#define configMAX_PRIORITIES                            ( 7 ) // Default in upstream simulator
-/* The stack allocated by FreeRTOS will be passed to a pthread.
-   pthread has a minimal stack size which currently is 16KB.
-   The rest is for additional structures of the POSIX/Linux port.
-   This is a magic number since PTHREAD_STACK_MIN seems to not be a constant. */
-#define configMINIMAL_STACK_SIZE                        ( ( unsigned short ) (0x4000 + 40) / sizeof(portSTACK_TYPE) )
-#else
-#define configMAX_PRIORITIES                            ( 25 )  //This has impact on speed of search for highest priority
-#define configMINIMAL_STACK_SIZE                        ( CONFIG_FREERTOS_IDLE_TASK_STACKSIZE + configSTACK_OVERHEAD_TOTAL )
-#endif
-#define configUSE_TIME_SLICING                          1
-#define configUSE_16_BIT_TICKS                          0
-#define configIDLE_SHOULD_YIELD                         0
-#define configKERNEL_INTERRUPT_PRIORITY                 1   //Todo: This currently isn't used anywhere
-
-// ------------- Synchronization Primitives ----------------
-
-#define configUSE_MUTEXES                               1
-#define configUSE_RECURSIVE_MUTEXES                     1
-#define configUSE_COUNTING_SEMAPHORES                   1
-#define configUSE_QUEUE_SETS                            1
-#define configQUEUE_REGISTRY_SIZE                       CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE
-#define configUSE_TASK_NOTIFICATIONS                    1
-#define configTASK_NOTIFICATION_ARRAY_ENTRIES           CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES
-
-// ----------------------- System --------------------------
-
-#define configMAX_TASK_NAME_LEN                         CONFIG_FREERTOS_MAX_TASK_NAME_LEN
-#define configNUM_THREAD_LOCAL_STORAGE_POINTERS         CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS
-#define configSTACK_DEPTH_TYPE                          uint32_t
-#ifndef CONFIG_IDF_TARGET_LINUX
-#define configUSE_NEWLIB_REENTRANT                      1
-#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H       1
-#else
-#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H       0 // Default in upstream simulator
-#endif
+    #define configEXPECTED_IDLE_TIME_BEFORE_SLEEP    CONFIG_FREERTOS_IDLE_TIME_BEFORE_SLEEP
+#endif /* configUSE_TICKLESS_IDLE */
+#define configCPU_CLOCK_HZ                           ( CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ * 1000000 )
+#define configTICK_RATE_HZ                           CONFIG_FREERTOS_HZ
+#define configUSE_TIME_SLICING                       1
+#define configUSE_16_BIT_TICKS                       0
+#define configIDLE_SHOULD_YIELD                      0
+#define configKERNEL_INTERRUPT_PRIORITY              1      /*Todo: This currently isn't used anywhere */
+
+/* ------------- Synchronization Primitives ---------------- */
+
+#define configUSE_MUTEXES                        1
+#define configUSE_RECURSIVE_MUTEXES              1
+#define configUSE_COUNTING_SEMAPHORES            1
+#define configUSE_QUEUE_SETS                     1
+#define configQUEUE_REGISTRY_SIZE                CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE
+#define configUSE_TASK_NOTIFICATIONS             1
+#define configTASK_NOTIFICATION_ARRAY_ENTRIES    CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES
+
+/* ----------------------- System -------------------------- */
+
+#define configMAX_TASK_NAME_LEN                        CONFIG_FREERTOS_MAX_TASK_NAME_LEN
+#if CONFIG_FREERTOS_SMP
+/* Number of TLSP is doubled to store TLSP deletion callbacks */
+    #define configNUM_THREAD_LOCAL_STORAGE_POINTERS    ( CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS * 2 )
+#else /* CONFIG_FREERTOS_SMP */
+    #define configNUM_THREAD_LOCAL_STORAGE_POINTERS    CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS
+#endif /* CONFIG_FREERTOS_SMP */
+#define configSTACK_DEPTH_TYPE                         uint32_t
 #if CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY
-#define configENABLE_BACKWARD_COMPATIBILITY             1
-#else
-#define configENABLE_BACKWARD_COMPATIBILITY             0
-#endif
-#define configASSERT(a)                                 assert(a)
-
-// ----------------------- Memory  -------------------------
-
-#define configSUPPORT_STATIC_ALLOCATION                 1
-#define configSUPPORT_DYNAMIC_ALLOCATION                1
-#ifdef CONFIG_IDF_TARGET_LINUX
-#define configTOTAL_HEAP_SIZE                           ( ( size_t ) ( 65 * 1024 ) ) // Default in upstream simulator
-#else
-//We define the heap to span all of the non-statically-allocated shared RAM. ToDo: Make sure there
-//is some space left for the app and main cpu when running outside of a thread.
-#define configTOTAL_HEAP_SIZE                           (&_heap_end - &_heap_start)//( ( size_t ) (64 * 1024) )
-#endif
-#define configAPPLICATION_ALLOCATED_HEAP                1
-#define configSTACK_ALLOCATION_FROM_SEPARATE_HEAP       0
-
-// ------------------------ Hooks --------------------------
-
-#define configUSE_IDLE_HOOK                             CONFIG_FREERTOS_USE_IDLE_HOOK
-#define configUSE_TICK_HOOK                             CONFIG_FREERTOS_USE_TICK_HOOK
+    #define configENABLE_BACKWARD_COMPATIBILITY        1
+#else /* CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY */
+    #define configENABLE_BACKWARD_COMPATIBILITY        0
+#endif /* CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY */
+#define configASSERT( a )    assert( a )
+
+/* ----------------------- Memory  ------------------------- */
+
+#define configSUPPORT_STATIC_ALLOCATION              1
+#define configSUPPORT_DYNAMIC_ALLOCATION             1
+#define configAPPLICATION_ALLOCATED_HEAP             1
+#define configSTACK_ALLOCATION_FROM_SEPARATE_HEAP    0
+
+/* ------------------------ Hooks -------------------------- */
+
+#if CONFIG_FREERTOS_USE_IDLE_HOOK
+    #define configUSE_IDLE_HOOK               1
+#else /* CONFIG_FREERTOS_USE_IDLE_HOOK */
+    #define configUSE_IDLE_HOOK               0
+#endif /* CONFIG_FREERTOS_USE_IDLE_HOOK */
+#if CONFIG_FREERTOS_USE_TICK_HOOK
+    #define configUSE_TICK_HOOK               1
+#else /* CONFIG_FREERTOS_USE_TICK_HOOK */
+    #define configUSE_TICK_HOOK               0
+#endif /* CONFIG_FREERTOS_USE_TICK_HOOK */
 #if CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE
-#define configCHECK_FOR_STACK_OVERFLOW                  0
+    #define configCHECK_FOR_STACK_OVERFLOW    0
 #elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL
-#define configCHECK_FOR_STACK_OVERFLOW                  1
+    #define configCHECK_FOR_STACK_OVERFLOW    1
 #elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY
-#define configCHECK_FOR_STACK_OVERFLOW                  2
-#endif
-#define configRECORD_STACK_HIGH_ADDRESS                 1   // This must be set as the port requires TCB.pxEndOfStack
+    #define configCHECK_FOR_STACK_OVERFLOW    2
+#endif /* CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE */
+#define configRECORD_STACK_HIGH_ADDRESS       1             /* This must be set as the port requires TCB.pxEndOfStack */
 
-// ------------------- Run-time Stats ----------------------
+/* ------------------- Run-time Stats ---------------------- */
 
 #ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS
-#define configGENERATE_RUN_TIME_STATS                   1   /* Used by vTaskGetRunTimeStats() */
-#endif
-#ifdef CONFIG_IDF_TARGET_LINUX
-#define configUSE_TRACE_FACILITY                        1
-#else
-#ifdef CONFIG_FREERTOS_USE_TRACE_FACILITY
-#define configUSE_TRACE_FACILITY                        1   /* Used by uxTaskGetSystemState(), and other trace facility functions */
-#endif
-#endif
+    #define configGENERATE_RUN_TIME_STATS           1       /* Used by vTaskGetRunTimeStats() */
+#endif /* CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS */
 #ifdef CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS
-#define configUSE_STATS_FORMATTING_FUNCTIONS            1   /* Used by vTaskList() */
-#endif
+    #define configUSE_STATS_FORMATTING_FUNCTIONS    1       /* Used by vTaskList() */
+#endif /* CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS */
 
-// -------------------- Co-routines  -----------------------
+/* -------------------- Co-routines  ----------------------- */
 
-#define configUSE_CO_ROUTINES                           0 // CO_ROUTINES are not supported in ESP-IDF
-#define configMAX_CO_ROUTINE_PRIORITIES                 2
+#define configUSE_CO_ROUTINES              0              /* CO_ROUTINES are not supported in ESP-IDF */
+#define configMAX_CO_ROUTINE_PRIORITIES    2
 
-// ------------------- Software Timer ----------------------
+/* ------------------- Software Timer ---------------------- */
 
-#define configUSE_TIMERS                                1
-#define configTIMER_TASK_PRIORITY                       CONFIG_FREERTOS_TIMER_TASK_PRIORITY
-#define configTIMER_QUEUE_LENGTH                        CONFIG_FREERTOS_TIMER_QUEUE_LENGTH
-#define configTIMER_TASK_STACK_DEPTH                    CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH
+#define configUSE_TIMERS                1
+#define configTIMER_TASK_PRIORITY       CONFIG_FREERTOS_TIMER_TASK_PRIORITY
+#define configTIMER_QUEUE_LENGTH        CONFIG_FREERTOS_TIMER_QUEUE_LENGTH
+#define configTIMER_TASK_STACK_DEPTH    CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH
 
-// -------------------- API Includes -----------------------
+/* -------------------- API Includes ----------------------- */
 
 #if CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY
-#define configENABLE_BACKWARD_COMPATIBILITY             1
-#else
-#define configENABLE_BACKWARD_COMPATIBILITY             0
-#endif
-
-#define INCLUDE_vTaskPrioritySet                        1
-#define INCLUDE_uxTaskPriorityGet                       1
-#define INCLUDE_vTaskDelete                             1
-#define INCLUDE_vTaskSuspend                            1
-#define INCLUDE_vTaskDelay                              1
-#define INCLUDE_xTaskGetIdleTaskHandle                  1
-#define INCLUDE_xTaskAbortDelay                         1
-#define INCLUDE_xSemaphoreGetMutexHolder                1
-#define INCLUDE_xTaskGetHandle                          1
-#define INCLUDE_uxTaskGetStackHighWaterMark             1
-#define INCLUDE_uxTaskGetStackHighWaterMark2            1
-#define INCLUDE_eTaskGetState                           1
-#define INCLUDE_xTaskResumeFromISR                      1
-#define INCLUDE_xTimerPendFunctionCall                  1
-#define INCLUDE_xTaskGetSchedulerState                  1
-#ifdef CONFIG_IDF_TARGET_LINUX
-#define INCLUDE_xTaskGetCurrentTaskHandle               0 // not defined in POSIX simulator
-#define INCLUDE_vTaskDelayUntil                         1
-#else
-#define INCLUDE_xTaskDelayUntil                         1
-#define INCLUDE_xTaskGetCurrentTaskHandle               1
-#endif
-//Unlisted
-#define INCLUDE_pxTaskGetStackStart                     1
-
-// -------------------- Trace Macros -----------------------
+    #define configENABLE_BACKWARD_COMPATIBILITY    1
+#else /* CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY */
+    #define configENABLE_BACKWARD_COMPATIBILITY    0
+#endif /* CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY */
+
+#define INCLUDE_vTaskPrioritySet                   1
+#define INCLUDE_uxTaskPriorityGet                  1
+#define INCLUDE_vTaskDelete                        1
+#define INCLUDE_vTaskSuspend                       1
+#define INCLUDE_vTaskDelay                         1
+#define INCLUDE_xTaskGetIdleTaskHandle             1
+#define INCLUDE_xTaskAbortDelay                    1
+#define INCLUDE_xSemaphoreGetMutexHolder           1
+#define INCLUDE_xTaskGetHandle                     1
+#define INCLUDE_uxTaskGetStackHighWaterMark        1
+#define INCLUDE_uxTaskGetStackHighWaterMark2       1
+#define INCLUDE_eTaskGetState                      1
+#define INCLUDE_xTaskResumeFromISR                 1
+#define INCLUDE_xTimerPendFunctionCall             1
+#define INCLUDE_xTaskGetSchedulerState             1
+/* Unlisted */
+#define INCLUDE_pxTaskGetStackStart                1
+
+/* -------------------- Trace Macros ----------------------- */
 
 /*
-For trace macros.
-Note: Include trace macros here and not above as trace macros are dependent on some of the FreeRTOS configs
-*/
+ * For trace macros.
+ * Note: Include trace macros here and not above as trace macros are dependent on some of the FreeRTOS configs
+ */
 #ifndef __ASSEMBLER__
-#if CONFIG_SYSVIEW_ENABLE
-#include "SEGGER_SYSVIEW_FreeRTOS.h"
-#undef INLINE // to avoid redefinition
-#endif //CONFIG_SYSVIEW_ENABLE
+    #if CONFIG_SYSVIEW_ENABLE
+        #include "SEGGER_SYSVIEW_FreeRTOS.h"
+        #undef INLINE /* to avoid redefinition */
+    #endif /* CONFIG_SYSVIEW_ENABLE */
+
+    #if CONFIG_FREERTOS_SMP
+
+/* Default values for trace macros added to ESP-IDF implementation of SYSVIEW
+ * that is not part of Amazon SMP FreeRTOS. */
+        #ifndef traceISR_EXIT
+            #define traceISR_EXIT()
+        #endif
+        #ifndef traceISR_ENTER
+            #define traceISR_ENTER( _n_ )
+        #endif
+
+        #ifndef traceQUEUE_GIVE_FROM_ISR
+            #define traceQUEUE_GIVE_FROM_ISR( pxQueue )
+        #endif
+
+        #ifndef traceQUEUE_GIVE_FROM_ISR_FAILED
+            #define traceQUEUE_GIVE_FROM_ISR_FAILED( pxQueue )
+        #endif
+
+        #ifndef traceQUEUE_SEMAPHORE_RECEIVE
+            #define traceQUEUE_SEMAPHORE_RECEIVE( pxQueue )
+        #endif
+    #endif /* CONFIG_FREERTOS_SMP */
 #endif /* def __ASSEMBLER__ */
 
-/* ------------------------------------------------ ESP-IDF Additions --------------------------------------------------
- * - All FreeRTOS related configurations no part of Vanilla FreeRTOS goes into this section
- * - FreeRTOS configurations related to SMP and ESP-IDF additions go into this section
+/* ----------------------------------------------- Amazon SMP FreeRTOS -------------------------------------------------
+ * - All Amazon SMP FreeRTOS specific configurations
  * ------------------------------------------------------------------------------------------------------------------ */
 
-// ------------------------- SMP ---------------------------
-
-#ifndef CONFIG_FREERTOS_UNICORE
-#define portNUM_PROCESSORS                              2
-#else
-#define portNUM_PROCESSORS                              1
-#endif
-#define configNUM_CORES                                 portNUM_PROCESSORS
-#ifdef CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID
-#define configTASKLIST_INCLUDE_COREID                   1
-#endif
-
-// ---------------------- Features -------------------------
-
-#ifdef CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS
-#define configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS     1
-#endif
-
-#if CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER
-#define configCHECK_MUTEX_GIVEN_BY_OWNER                1
-#else
-#define configCHECK_MUTEX_GIVEN_BY_OWNER                0
-#endif
+#if CONFIG_FREERTOS_SMP
+    #ifdef CONFIG_FREERTOS_UNICORE
+        #define configNUM_CORES                  1
+    #else
+        #define configNUM_CORES                  2
+    #endif /* CONFIG_FREERTOS_UNICORE */
+    #define configUSE_CORE_AFFINITY              1
+    #define configRUN_MULTIPLE_PRIORITIES        1
+    #define configUSE_TASK_PREEMPTION_DISABLE    1
+
+/* This is always enabled to call IDF style idle hooks, by can be "--Wl,--wrap"
+ * if users enable CONFIG_FREERTOS_USE_MINIMAL_IDLE_HOOK. */
+    #define configUSE_MINIMAL_IDLE_HOOK          1
+
+/* IDF Newlib supports dynamic reentrancy. We provide our own __getreent()
+ * function. */
+    #define configNEWLIB_REENTRANT_IS_DYNAMIC    1
+#endif /* CONFIG_FREERTOS_SMP */
+
+/* -------------------------------------------------- IDF FreeRTOS -----------------------------------------------------
+ * - All IDF FreeRTOS specific configurations
+ * ------------------------------------------------------------------------------------------------------------------ */
 
-#ifndef __ASSEMBLER__
-#if CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP
-extern void vPortCleanUpTCB ( void *pxTCB );
-#define portCLEAN_UP_TCB( pxTCB )                       vPortCleanUpTCB( pxTCB )
-#endif
-#endif
+#if !CONFIG_FREERTOS_SMP
+    #ifdef CONFIG_FREERTOS_UNICORE
+        #define configNUM_CORES                                1
+    #else
+        #define configNUM_CORES                                2
+    #endif /* CONFIG_FREERTOS_UNICORE */
+    #ifdef CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID
+        #define configTASKLIST_INCLUDE_COREID                  1
+    #endif /* CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID */
+    #ifdef CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS
+        #define configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS    1
+    #endif /* CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS */
+    #if CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER
+        #define configCHECK_MUTEX_GIVEN_BY_OWNER               1
+    #endif /* CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER */
+#endif /* !CONFIG_FREERTOS_SMP */
 
-#endif // CONFIG_FREERTOS_SMP
+/* ------------------------------------------------ ESP-IDF Additions --------------------------------------------------
+ * - Any other macros required by the rest of ESP-IDF
+ * ------------------------------------------------------------------------------------------------------------------ */
 
-#endif /* FREERTOS_CONFIG_H */
+#define portNUM_PROCESSORS    configNUM_CORES

+ 2 - 1
tools/mocks/freertos/CMakeLists.txt

@@ -10,7 +10,8 @@ set(include_dirs
     "${kernel_dir}/include"
     "${original_freertos_dir}/esp_additions/include"
     "${original_freertos_dir}/esp_additions/include/freertos"
-    "${kernel_dir}/portable/linux/include" # For FreeRTOSConfig_arch.h
+    "${original_freertos_dir}/esp_additions/arch/linux/include" # For "freertos/FreeRTOSConfig_arch.h"
+    "${kernel_dir}/portable/linux/include" # For "freertos/portmacro.h"
     "${kernel_dir}/include/freertos" # this is due to the way includes are generated in CMock (without freertos prefix)
 )