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] [July 2007 Threads] Minor bug in 4.3.1 xQueueSend()/XQueueRecievePosted by Dan on July 27, 2007 In 4.3.1:
Small issue in xQueueSend() and xQueueReceive() in queue.c.
Near the end, where it has the code:
if( xTicksToWait > 0 ) { if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) { xReturn = queueERRONEOUS_UNBLOCK; } }
I recommend:
#if ( INCLUDE_vTaskSuspend == 1 ) if(( xTicksToWait > 0 ) && ( xTicksToWait != portMAX_DELAY )) #else if( xTicksToWait > 0 ) #endif { if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) { xReturn = queueERRONEOUS_UNBLOCK; } }
xTicksToWait is set portMAX_DELAY for indefinite waits, but without the above change, it will be decremented. This slightly effects later code, which processes threads differently depending on if their wait time is portMAX_DELAY or not.
Dan Searles
RE: Minor bug in 4.3.1 xQueueSend()/XQueueRecievePosted by Richard on July 27, 2007 Hmm. I think you have a good point. This part of the code came about from the SafeRTOS validation process - but in SafeRTOS there is no method of waiting indefinitely so the problem does not exist. The error was made when integrating this into the FreeRTOS.org code.
I think the fix would be better in xTaskCheckForTimeOut() to prevent it being duplicated in xQueueSend() and xQueueReceive(). Also these two functions are alread the most complex in the system, so best not to add code to them if possible.
Thank you for your contribution.
Regards.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|