freertos: Rename CORE_ID_PRO/CORE_ID_APP macros to CORE_ID_REGVAL_xxx

Old values remain for compatibility.

As suggested in https://github.com/espressif/esp-idf/issues/2567
This commit is contained in:
Angus Gratton
2019-08-12 11:12:34 +10:00
committed by Angus Gratton
parent a40e164988
commit 4fe74b8f64
4 changed files with 19 additions and 13 deletions

View File

@@ -138,13 +138,13 @@ typedef struct {
/* owner field values: /* owner field values:
* 0 - Uninitialized (invalid) * 0 - Uninitialized (invalid)
* portMUX_FREE_VAL - Mux is free, can be locked by either CPU * portMUX_FREE_VAL - Mux is free, can be locked by either CPU
* CORE_ID_PRO / CORE_ID_APP - Mux is locked to the particular core * CORE_ID_REGVAL_PRO / CORE_ID_REGVAL_APP - Mux is locked to the particular core
* *
* Note that for performance reasons we use the full Xtensa CORE ID values * Note that for performance reasons we use the full Xtensa CORE ID values
* (CORE_ID_PRO, CORE_ID_APP) and not the 0,1 values which are used in most * (CORE_ID_REGVAL_PRO, CORE_ID_REGVAL_APP) and not the 0,1 values which are used in most
* other FreeRTOS code. * other FreeRTOS code.
* *
* Any value other than portMUX_FREE_VAL, CORE_ID_PRO, CORE_ID_APP indicates corruption * Any value other than portMUX_FREE_VAL, CORE_ID_REGVAL_PRO, CORE_ID_REGVAL_APP indicates corruption
*/ */
uint32_t owner; uint32_t owner;
/* count field: /* count field:

View File

@@ -325,11 +325,17 @@ STRUCT_END(XtSolFrame)
.endm .endm
#endif #endif
/* Note: These are different to xCoreID used in ESP-IDF FreeRTOS, we just use /* Note: These are different to xCoreID used in ESP-IDF FreeRTOS, most places use
0 and 1 which are determined by checking bit 13 (see previous comment) 0 and 1 which are determined by checking bit 13 (see previous comment)
*/ */
#define CORE_ID_PRO 0xCDCD #define CORE_ID_REGVAL_PRO 0xCDCD
#define CORE_ID_APP 0xABAB #define CORE_ID_REGVAL_APP 0xABAB
/* Included for compatibility, recommend using CORE_ID_REGVAL_PRO instead */
#define CORE_ID_PRO CORE_ID_REGVAL_PRO
/* Included for compatibility, recommend using CORE_ID_REGVAL_APP instead */
#define CORE_ID_APP CORE_ID_REGVAL_APP
/* /*
------------------------------------------------------------------------------- -------------------------------------------------------------------------------

View File

@@ -49,7 +49,7 @@
#include "soc/soc_memory_layout.h" #include "soc/soc_memory_layout.h"
/* XOR one core ID with this value to get the other core ID */ /* XOR one core ID with this value to get the other core ID */
#define CORE_ID_XOR_SWAP (CORE_ID_PRO ^ CORE_ID_APP) #define CORE_ID_REGVAL_XOR_SWAP (CORE_ID_REGVAL_PRO ^ CORE_ID_REGVAL_APP)

View File

@@ -61,7 +61,7 @@ PORTMUX_AQUIRE_MUX_FN_NAME(portMUX_TYPE *mux, int timeout_cycles) {
#ifdef CONFIG_FREERTOS_PORTMUX_DEBUG #ifdef CONFIG_FREERTOS_PORTMUX_DEBUG
uint32_t owner = mux->owner; uint32_t owner = mux->owner;
if (owner != portMUX_FREE_VAL && owner != CORE_ID_PRO && owner != CORE_ID_APP) { if (owner != portMUX_FREE_VAL && owner != CORE_ID_REGVAL_PRO && owner != CORE_ID_REGVAL_APP) {
ets_printf("ERROR: vPortCPUAcquireMutex: mux %p is uninitialized (0x%X)! Called from %s line %d.\n", mux, owner, fnName, line); ets_printf("ERROR: vPortCPUAcquireMutex: mux %p is uninitialized (0x%X)! Called from %s line %d.\n", mux, owner, fnName, line);
mux->owner=portMUX_FREE_VAL; mux->owner=portMUX_FREE_VAL;
} }
@@ -70,13 +70,13 @@ PORTMUX_AQUIRE_MUX_FN_NAME(portMUX_TYPE *mux, int timeout_cycles) {
/* Spin until we own the core */ /* Spin until we own the core */
RSR(PRID, coreID); RSR(PRID, coreID);
/* Note: coreID is the full 32 bit core ID (CORE_ID_PRO/CORE_ID_APP), /* Note: coreID is the full 32 bit core ID (CORE_ID_REGVAL_PRO/CORE_ID_REGVAL_APP),
not the 0/1 value returned by xPortGetCoreID() not the 0/1 value returned by xPortGetCoreID()
*/ */
otherCoreID = CORE_ID_XOR_SWAP ^ coreID; otherCoreID = CORE_ID_REGVAL_XOR_SWAP ^ coreID;
do { do {
/* mux->owner should be one of portMUX_FREE_VAL, CORE_ID_PRO, /* mux->owner should be one of portMUX_FREE_VAL, CORE_ID_REGVAL_PRO,
CORE_ID_APP: CORE_ID_REGVAL_APP:
- If portMUX_FREE_VAL, we want to atomically set to 'coreID'. - If portMUX_FREE_VAL, we want to atomically set to 'coreID'.
- If "our" coreID, we can drop through immediately. - If "our" coreID, we can drop through immediately.
@@ -138,7 +138,7 @@ static inline void PORTMUX_RELEASE_MUX_FN_NAME(portMUX_TYPE *mux) {
mux->lastLockedFn=fnName; mux->lastLockedFn=fnName;
mux->lastLockedLine=line; mux->lastLockedLine=line;
uint32_t owner = mux->owner; uint32_t owner = mux->owner;
if (owner != portMUX_FREE_VAL && owner != CORE_ID_PRO && owner != CORE_ID_APP) { if (owner != portMUX_FREE_VAL && owner != CORE_ID_REGVAL_PRO && owner != CORE_ID_REGVAL_APP) {
ets_printf("ERROR: vPortCPUReleaseMutex: mux %p is invalid (0x%x)!\n", mux, mux->owner); ets_printf("ERROR: vPortCPUReleaseMutex: mux %p is invalid (0x%x)!\n", mux, mux->owner);
} }
#endif #endif