Posted by incrediball
on March 31, 2010
According to the documentation xSemaphoreGiveFromISR returns pdTRUE if the semaphore was successfully given, otherwise errQUEUE_FULL. What is the meaning of errQUEUE_FULL? Does it mean that the semaphore was already given?
It would be useful for debugging reasons to know if an interrupt is giving a semaphore without a task taking the semaphore. How can this be accomplished?
RE: xSemaphoreGiveFromISR return
Posted by Richard
on April 1, 2010
Yes - semaphores are built on top of queues, so when you get the errQUEUE_FULL return value it means the semaphore cannot be given because it is already there. For example, if it is a binary semaphore, you can take the semaphore successfully, then give it successfully once. Once it is given the semaphore is effectively 'full'. If you attempt to give it again without first taking it again you will get this error code returned.
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.