feat(freertos-smp): Add support for queue direct transfer

This commit adds support for direct transfer for queue operations. A ew
config option configQUEUE_DIRECT_TRANSFER is introduced to enable this
option. With this feature, we enable directly copying data to a waiting
task's buffer and avoid copying data to the queue buffer. This helps in
avoiding priority inversions where a lower priority task can steal
a data from a higher priority task blocked on the queue. This also
reduces a copy operation and helps with the queue performance.
This commit is contained in:
Sudeep Mohanty 2025-10-30 14:08:02 +08:00
parent 4ee717950d
commit 53a44909aa
2 changed files with 310 additions and 22 deletions

View file

@ -3337,6 +3337,11 @@ typedef struct xSTATIC_QUEUE
#if ( ( portUSING_GRANULAR_LOCKS == 1 ) && ( configNUMBER_OF_CORES > 1 ) )
portSPINLOCK_TYPE xDummySpinlock[ 2 ];
#endif /* #if ( ( portUSING_GRANULAR_LOCKS == 1 ) && ( configNUMBER_OF_CORES > 1 ) ) */
#if ( configQUEUE_DIRECT_TRANSFER == 1 )
void * pvDummyDirectTransferBuffer;
BaseType_t xDummyDirectTransferPosition;
#endif
} StaticQueue_t;
typedef StaticQueue_t StaticSemaphore_t;