Skip to content

Commit 3c9140d

Browse files
Optimize uxStreamBufferAdd() locking mechanism (#1181)
* Optimize uxStreamBufferAdd() locking mechanism * Fix uxStreamBufferAdd unit tests --------- Co-authored-by: Tony Josi <[email protected]>
1 parent cb8f00c commit 3c9140d

File tree

2 files changed

+2
-23
lines changed

2 files changed

+2
-23
lines changed

source/FreeRTOS_Stream_Buffer.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ size_t uxStreamBufferAdd( StreamBuffer_t * const pxBuffer,
307307

308308
/* The below update to the stream buffer members must happen
309309
* atomically. */
310-
vTaskSuspendAll();
310+
taskENTER_CRITICAL();
311311
{
312312
if( uxOffset == 0U )
313313
{
@@ -328,7 +328,7 @@ size_t uxStreamBufferAdd( StreamBuffer_t * const pxBuffer,
328328
pxBuffer->uxFront = uxNextHead;
329329
}
330330
}
331-
( void ) xTaskResumeAll();
331+
taskEXIT_CRITICAL();
332332
}
333333

334334
return uxCount;

test/unit-test/FreeRTOS_Stream_Buffer/FreeRTOS_Stream_Buffer_utest.c

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -601,9 +601,6 @@ void test_uxStreamBufferAdd_BufferHasMoreSpaceThanData_ZeroOffset_DataWriteCause
601601

602602
FreeRTOS_min_size_t_Stub( FreeRTOS_min_stub );
603603

604-
vTaskSuspendAll_Expect();
605-
xTaskResumeAll_ExpectAndReturn( pdTRUE );
606-
607604
uxReturn = uxStreamBufferAdd( pxLocalBuffer, uxOffset, pucData, uxByteCount );
608605

609606
/* Only these many bytes should be written. */
@@ -656,9 +653,6 @@ void test_uxStreamBufferAdd_BufferHasLessSpaceThanData_ZeroOffset( void )
656653

657654
FreeRTOS_min_size_t_Stub( FreeRTOS_min_stub );
658655

659-
vTaskSuspendAll_Expect();
660-
xTaskResumeAll_ExpectAndReturn( pdTRUE );
661-
662656
uxReturn = uxStreamBufferAdd( pxLocalBuffer, uxOffset, pucData, uxByteCount );
663657

664658
/* Only 500 bytes should be written. */
@@ -702,9 +696,6 @@ void test_uxStreamBufferAdd_BufferHasLessSpaceThanData_NonZeroOffset( void )
702696

703697
FreeRTOS_min_size_t_Stub( FreeRTOS_min_stub );
704698

705-
vTaskSuspendAll_Expect();
706-
xTaskResumeAll_ExpectAndReturn( pdTRUE );
707-
708699
uxReturn = uxStreamBufferAdd( pxLocalBuffer, uxOffset, pucData, uxByteCount );
709700

710701
/* Only these many bytes should be written. */
@@ -757,9 +748,6 @@ void test_uxStreamBufferAdd_BufferHasLessSpaceThanData_NonZeroOffsetCausesRollov
757748

758749
FreeRTOS_min_size_t_Stub( FreeRTOS_min_stub );
759750

760-
vTaskSuspendAll_Expect();
761-
xTaskResumeAll_ExpectAndReturn( pdTRUE );
762-
763751
uxReturn = uxStreamBufferAdd( pxLocalBuffer, uxOffset, pucData, uxByteCount );
764752

765753
/* Only these many bytes should be written. */
@@ -813,9 +801,6 @@ void test_uxStreamBufferAdd_BufferHasLessSpaceThanData_ZeroOffset_DataWriteCause
813801

814802
FreeRTOS_min_size_t_Stub( FreeRTOS_min_stub );
815803

816-
vTaskSuspendAll_Expect();
817-
xTaskResumeAll_ExpectAndReturn( pdTRUE );
818-
819804
uxReturn = uxStreamBufferAdd( pxLocalBuffer, uxOffset, pucData, uxByteCount );
820805

821806
/* Only these many bytes should be written. */
@@ -873,9 +858,6 @@ void test_uxStreamBufferAdd_NULLData_BufferHasLessSpaceThanData_ZeroOffset_DataW
873858

874859
FreeRTOS_min_size_t_Stub( FreeRTOS_min_stub );
875860

876-
vTaskSuspendAll_Expect();
877-
xTaskResumeAll_ExpectAndReturn( pdTRUE );
878-
879861
uxReturn = uxStreamBufferAdd( pxLocalBuffer, uxOffset, NULL, uxByteCount );
880862

881863
/* Nothing should be written but tail will be updated. */
@@ -929,9 +911,6 @@ void test_uxStreamBufferAdd_NULLData_BufferHasLessSpaceThanData_ZeroOffset_DataW
929911

930912
FreeRTOS_min_size_t_Stub( FreeRTOS_min_stub );
931913

932-
vTaskSuspendAll_Expect();
933-
xTaskResumeAll_ExpectAndReturn( pdTRUE );
934-
935914
uxReturn = uxStreamBufferAdd( pxLocalBuffer, uxOffset, NULL, uxByteCount );
936915

937916
/* Nothing should be written but tail should be updated. */

0 commit comments

Comments
 (0)