mirror of
https://github.com/espressif/esp-idf.git
synced 2025-09-22 17:02:25 +00:00
feat(freertos): Introduced new Kconfig option CONFIG_FREERTOS_NUMBER_OF_CORES
This commit replaces the use of portNUM_PROCESSORS and configNUM_CORES macros in all of ESP-IDF. These macros are needed to realize an SMP scenario by fetching the number of active cores FreeRTOS is running on. Instead, a new Kconfig option, CONFIG_FREERTOS_NUMBER_OF_CORES, has been added as a proxy for the FreeRTOS config option, configNUMBER_OF_CORES. This new commit is now used to realize an SMP scenario in various places in ESP-IDF. [Sudeep Mohanty: Added new Kconfig option CONFIG_FREERTOS_NUMBER_OF_CORES] Signed-off-by: Sudeep Mohanty <sudeep.mohanty@espressif.com>
This commit is contained in:
@@ -24,8 +24,8 @@
|
||||
#define MAX_HOOKS 8
|
||||
|
||||
static portMUX_TYPE hooks_spinlock = portMUX_INITIALIZER_UNLOCKED;
|
||||
static esp_freertos_idle_cb_t idle_cb[portNUM_PROCESSORS][MAX_HOOKS] = {0};
|
||||
static esp_freertos_tick_cb_t tick_cb[portNUM_PROCESSORS][MAX_HOOKS] = {0};
|
||||
static esp_freertos_idle_cb_t idle_cb[CONFIG_FREERTOS_NUMBER_OF_CORES][MAX_HOOKS] = {0};
|
||||
static esp_freertos_tick_cb_t tick_cb[CONFIG_FREERTOS_NUMBER_OF_CORES][MAX_HOOKS] = {0};
|
||||
|
||||
void IRAM_ATTR esp_vApplicationTickHook(void)
|
||||
{
|
||||
@@ -62,7 +62,7 @@ void esp_vApplicationIdleHook(void)
|
||||
|
||||
esp_err_t esp_register_freertos_idle_hook_for_cpu(esp_freertos_idle_cb_t new_idle_cb, UBaseType_t cpuid)
|
||||
{
|
||||
if (cpuid >= portNUM_PROCESSORS) {
|
||||
if (cpuid >= CONFIG_FREERTOS_NUMBER_OF_CORES) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
portENTER_CRITICAL(&hooks_spinlock);
|
||||
@@ -84,7 +84,7 @@ esp_err_t esp_register_freertos_idle_hook(esp_freertos_idle_cb_t new_idle_cb)
|
||||
|
||||
esp_err_t esp_register_freertos_tick_hook_for_cpu(esp_freertos_tick_cb_t new_tick_cb, UBaseType_t cpuid)
|
||||
{
|
||||
if (cpuid >= portNUM_PROCESSORS) {
|
||||
if (cpuid >= CONFIG_FREERTOS_NUMBER_OF_CORES) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
portENTER_CRITICAL(&hooks_spinlock);
|
||||
@@ -106,7 +106,7 @@ esp_err_t esp_register_freertos_tick_hook(esp_freertos_tick_cb_t new_tick_cb)
|
||||
|
||||
void esp_deregister_freertos_idle_hook_for_cpu(esp_freertos_idle_cb_t old_idle_cb, UBaseType_t cpuid)
|
||||
{
|
||||
if (cpuid >= portNUM_PROCESSORS) {
|
||||
if (cpuid >= CONFIG_FREERTOS_NUMBER_OF_CORES) {
|
||||
return;
|
||||
}
|
||||
portENTER_CRITICAL(&hooks_spinlock);
|
||||
@@ -121,7 +121,7 @@ void esp_deregister_freertos_idle_hook_for_cpu(esp_freertos_idle_cb_t old_idle_c
|
||||
void esp_deregister_freertos_idle_hook(esp_freertos_idle_cb_t old_idle_cb)
|
||||
{
|
||||
portENTER_CRITICAL(&hooks_spinlock);
|
||||
for (int m = 0; m < portNUM_PROCESSORS; m++) {
|
||||
for (int m = 0; m < CONFIG_FREERTOS_NUMBER_OF_CORES; m++) {
|
||||
esp_deregister_freertos_idle_hook_for_cpu(old_idle_cb, m);
|
||||
}
|
||||
portEXIT_CRITICAL(&hooks_spinlock);
|
||||
@@ -129,7 +129,7 @@ void esp_deregister_freertos_idle_hook(esp_freertos_idle_cb_t old_idle_cb)
|
||||
|
||||
void esp_deregister_freertos_tick_hook_for_cpu(esp_freertos_tick_cb_t old_tick_cb, UBaseType_t cpuid)
|
||||
{
|
||||
if (cpuid >= portNUM_PROCESSORS) {
|
||||
if (cpuid >= CONFIG_FREERTOS_NUMBER_OF_CORES) {
|
||||
return;
|
||||
}
|
||||
portENTER_CRITICAL(&hooks_spinlock);
|
||||
@@ -144,7 +144,7 @@ void esp_deregister_freertos_tick_hook_for_cpu(esp_freertos_tick_cb_t old_tick_c
|
||||
void esp_deregister_freertos_tick_hook(esp_freertos_tick_cb_t old_tick_cb)
|
||||
{
|
||||
portENTER_CRITICAL(&hooks_spinlock);
|
||||
for (int m = 0; m < portNUM_PROCESSORS; m++) {
|
||||
for (int m = 0; m < CONFIG_FREERTOS_NUMBER_OF_CORES; m++) {
|
||||
esp_deregister_freertos_tick_hook_for_cpu(old_tick_cb, m);
|
||||
}
|
||||
portEXIT_CRITICAL(&hooks_spinlock);
|
||||
|
Reference in New Issue
Block a user