FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [June 2005 Threads] optimisaztion in xQueueSend and xQueueReceivePosted by Nobody/Anonymous on June 23, 2005 at line 349 and line 474 in queue.c , there is the same code below:
if( prvUnlockQueue( pxQueue ) ) { if( !xTaskResumeAll() ) { taskYIELD(); } } else { xTaskResumeAll(); }
But i think in these code if prvUnlockQueue( pxQueue ) return pdTRUE then xTaskResumeAll() must return pdTRUE( if scheduler is not locket nested) , so it's meaningless to do taskYIELD(). So these code can be changed to:
prvUnlockQueue( pxQueue ) ; xTaskResumeAll();
RE: optimisaztion in xQueueSend and xQueueReceivePosted by Richard on June 23, 2005 This is the most complex part of the code. Everything is geared at ensuring interrupts are disabled for the shortest possible period.
You might be right in your comment - with the scheduler suspended unlocking the queue can only move items to the pending ready list - where they will be removed by xTaskResumeAll().
I know there was a lot of thought that went into this code sequence. It was originally as per or similar to your suggestion. This one will take a bit of digging time for me to find why the change was made. It will be good to look again at this in detail. Out of interest I will run a few black box style tests to see if they ever fail with the change.
In any case the optimisation saving would be minimal - with a couple of tests being removed.
Regards.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|