freertos: Add portTRY_ENTRY_CRITICAL() and deprecate legacy spinlock fucntions

Add TRY_ENTRY_CRITICAL() API to all for timeouts when entering critical sections.
The following port API were added:
- portTRY_ENTER_CRITICAL()
- portTRY_ENTER_CRITICAL_ISR()
- portTRY_ENTER_CRITICAL_SAFE()

Deprecated legacy spinlock API in favor of spinlock.h. The following API were deprecated:
- vPortCPUInitializeMutex()
- vPortCPUAcquireMutex()
- vPortCPUAcquireMutexTimeout()
- vPortCPUReleaseMutex()

Other Changes:
- Added portMUX_INITIALIZE() to replace vPortCPUInitializeMutex()
- The assembly of the critical section functions ends up being about 50 instructions longer,
  thus the spinlock test pass threshold had to be increased to account for the extra runtime.

Closes https://github.com/espressif/esp-idf/issues/5301
This commit is contained in:
Darian Leung
2021-10-30 00:48:19 +08:00
parent 7207a3c4d5
commit 9b3796d2f1
19 changed files with 370 additions and 299 deletions

View File

@@ -1351,7 +1351,7 @@ static void prvInitialiseNewStreamBuffer( StreamBuffer_t * const pxStreamBuffer,
pxStreamBuffer->xTriggerLevelBytes = xTriggerLevelBytes;
pxStreamBuffer->ucFlags = ucFlags;
#ifdef ESP_PLATFORM
vPortCPUInitializeMutex( &pxStreamBuffer->xStreamBufferMux );
portMUX_INITIALIZE( &pxStreamBuffer->xStreamBufferMux );
#endif // ESP_PLATFORM
}