Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Real time embedded FreeRTOS mailing list 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem TCP & FAT Training




Loading

optimisaztion in xQueueSend and xQueueReceive

Posted 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 xQueueReceive

Posted 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.


[ Back to the top ]    [ About FreeRTOS ]    [ Sitemap ]    [ ]




Copyright (C) 2004-2010 Richard Barry. Copyright (C) 2010-2016 Real Time Engineers Ltd.
Any and all data, files, source code, html content and documentation included in the FreeRTOSTM distribution or available on this site are the exclusive property of Real Time Engineers Ltd.. See the files license.txt (included in the distribution) and this copyright notice for more information. FreeRTOSTM and FreeRTOS.orgTM are trade marks of Real Time Engineers Ltd.

Latest News:

FreeRTOS V9.0.0 is now available for download.


Free TCP/IP and file system demos for the RTOS


Sponsored Links

⇓ Now With No Code Size Limit! ⇓
⇑ Free Download Without Registering ⇑


FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

Renesas Electronics Gold Alliance RTOS Partner.jpg

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers

Atmel RTOS partner supporting ARM Cortex-M3 and AVR32 microcontrollers

STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Xilinx Microblaze and Zynq partner

Silicon Labs low power RTOS partner

Altera RTOS partner for Nios II and Cortex-A9 SoC

Freescale Alliance RTOS Member supporting ARM and ColdFire microcontrollers

Infineon ARM Cortex-M microcontrollers

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

Cypress RTOS partner supporting ARM Cortex-M3

Fujitsu RTOS partner supporting ARM Cortex-M3 and FM3

Microsemi (previously Actel) RTOS partner supporting ARM Cortex-M3

Atollic Partner

IAR Partner

Keil ARM Partner

Embedded Artists