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


Block time in gatekeeper example 16 from book

Posted by on June 11, 2011

Looking at example 16 in the book there is the prvPrintTask() function which is used to send strings to the gatekeeper task. This task uses xQueueSendToBack() with a block time of 0. The comments say that this block time is used because there should always be space in the queue. But I am not sure that this is safe (especially to use it in an example), because both prvPrintTask() instances have priorities higher than the gatekeeper task and use random blocking delays. Additionally there is an ISR also writing to the queue. Maybe it is unlikely that all delays happen to be very short 5 consecutive times (5 is the size of the queue), but on the other hand the gatekeeper uses printf which takes a lot of time so IMHO the queue may become full because the low priority gatekeeper may not get the chance to always empty the queue in time and if it was another type of application - queuing important items to the queue may fail. Or do I misunderstand something?


RE: Block time in gatekeeper example 16 from book

Posted by on June 11, 2011
Sorry, in the post above of course I wanted to say that prvPrintTask() uses xQueueSendToBack() with a block time of 0.

RE: Block time in gatekeeper example 16 from book

Posted by Richard on June 11, 2011
I think your analysis is in fact accurate. While it is unlikely that the queue would become full, it is definitely not impossible. Probably the comment should be edited. In the example, posts to the queue that are not successful may pas unnoticed as the return value of the queue send function is not checked.

Thanks for pointing this out.

RE: Block time in gatekeeper example 16 from book

Posted by on June 11, 2011
Thanks for the reply Richard!

I am happy that I have understood how FreeRTOS works, at least in theory ;)

Best 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