Chapter 2. API Reference
See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this function.
Note 1: A receive (in the case of a queue) or take (in the case of a semaphore) operation must not be performed
on a member of a queue set unless a call to xQueueSelectFromSet() has first returned a handle to that set
member.
Return If the queue or semaphore was successfully added to the queue set then pdPASS is returned. If the
queue could not be successfully added to the queue set because it is already a member of a different queue
set then pdFAIL is returned.
Parameters
• xQueueOrSemaphore: The handle of the queue or semaphore being added to the queue set (cast
to an QueueSetMemberHandle_t type).
• xQueueSet: The handle of the queue set to which the queue or semaphore is being added.
BaseType_t xQueueRemoveFromSet(QueueSetMemberHandle_t xQueueOrSemaphore, Queue-
SetHandle_t xQueueSet)
Removes a queue or semaphore from a queue set. A queue or semaphore can only be removed from a set if
the queue or semaphore is empty.
See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this function.
Return If the queue or semaphore was successfully removed from the queue set then pdPASS is returned. If
the queue was not in the queue set, or the queue (or semaphore) was not empty, then pdFAIL is returned.
Parameters
• xQueueOrSemaphore: The handle of the queue or semaphore being removed from the queue
set (cast to an QueueSetMemberHandle_t type).
• xQueueSet: The handle of the queue set in which the queue or semaphore is included.
QueueSetMemberHandle_t xQueueSelectFromSet(QueueSetHandle_t xQueueSet, const TickType_t
xTicksToWait)
xQueueSelectFromSet() selects from the members of a queue set a queue or semaphore that either contains
data (in the case of a queue) or is available to take (in the case of a semaphore). xQueueSelectFromSet()
effectively allows a task to block (pend) on a read operation on all the queues and semaphores in a queue set
simultaneously.
See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this function.
Note 1: See the documentation on https://www.FreeRTOS.org/RTOS-queue-sets.html for reasons why queue
sets are very rarely needed in practice as there are simpler methods of blocking on multiple objects.
Note 2: Blocking on a queue set that contains a mutex will not cause the mutex holder to inherit the priority
of the blocked task.
Note 3: A receive (in the case of a queue) or take (in the case of a semaphore) operation must not be performed
on a member of a queue set unless a call to xQueueSelectFromSet() has first returned a handle to that set
member.
Return xQueueSelectFromSet() will return the handle of a queue (cast to a QueueSetMemberHandle_t type)
contained in the queue set that contains data, or the handle of a semaphore (cast to a QueueSetMem-
berHandle_t type) contained in the queue set that is available, or NULL if no such queue or semaphore
exists before before the specified block time expires.
Parameters
• xQueueSet: The queue set on which the task will (potentially) block.
• xTicksToWait: The maximum time, in ticks, that the calling task will remain in the Blocked
state (with other tasks executing) to wait for a member of the queue set to be ready for a successful
queue read or semaphore take operation.
QueueSetMemberHandle_t xQueueSelectFromSetFromISR(QueueSetHandle_t xQueueSet)
A version of xQueueSelectFromSet() that can be used from an ISR.
Macros
xQueueCreate(uxQueueLength, uxItemSize)
Creates a new queue instance, and returns a handle by which the new queue can be referenced.
Espressif Systems 891
Submit Document Feedback
Release v4.4