firmware
IEM Firmware Documentation
Loading...
Searching...
No Matches
queue.h
Go to the documentation of this file.
1/*
2 * FreeRTOS Kernel V11.1.0
3 * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4 *
5 * SPDX-License-Identifier: MIT
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a copy of
8 * this software and associated documentation files (the "Software"), to deal in
9 * the Software without restriction, including without limitation the rights to
10 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 * the Software, and to permit persons to whom the Software is furnished to do so,
12 * subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included in all
15 * copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 *
24 * https://www.FreeRTOS.org
25 * https://github.com/FreeRTOS
26 *
27 */
28
29
30#ifndef QUEUE_H
31#define QUEUE_H
32
33#ifndef INC_FREERTOS_H
34 #error "include FreeRTOS.h" must appear in source files before "include queue.h"
35#endif
36
37/* *INDENT-OFF* */
38#ifdef __cplusplus
39 extern "C" {
40#endif
41/* *INDENT-ON* */
42
43#include "task.h"
44
50struct QueueDefinition; /* Using old naming convention so as not to break kernel aware debuggers. */
52
59
66
67/* For internal use only. */
68#define queueSEND_TO_BACK ( ( BaseType_t ) 0 )
69#define queueSEND_TO_FRONT ( ( BaseType_t ) 1 )
70#define queueOVERWRITE ( ( BaseType_t ) 2 )
71
72/* For internal use only. These definitions *must* match those in queue.c. */
73#define queueQUEUE_TYPE_BASE ( ( uint8_t ) 0U )
74#define queueQUEUE_TYPE_SET ( ( uint8_t ) 0U )
75#define queueQUEUE_TYPE_MUTEX ( ( uint8_t ) 1U )
76#define queueQUEUE_TYPE_COUNTING_SEMAPHORE ( ( uint8_t ) 2U )
77#define queueQUEUE_TYPE_BINARY_SEMAPHORE ( ( uint8_t ) 3U )
78#define queueQUEUE_TYPE_RECURSIVE_MUTEX ( ( uint8_t ) 4U )
79
148#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
149 #define xQueueCreate( uxQueueLength, uxItemSize ) xQueueGenericCreate( ( uxQueueLength ), ( uxItemSize ), ( queueQUEUE_TYPE_BASE ) )
150#endif
151
234#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
235 #define xQueueCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxQueueBuffer ) xQueueGenericCreateStatic( ( uxQueueLength ), ( uxItemSize ), ( pucQueueStorage ), ( pxQueueBuffer ), ( queueQUEUE_TYPE_BASE ) )
236#endif /* configSUPPORT_STATIC_ALLOCATION */
237
263#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
264 #define xQueueGetStaticBuffers( xQueue, ppucQueueStorage, ppxStaticQueue ) xQueueGenericGetStaticBuffers( ( xQueue ), ( ppucQueueStorage ), ( ppxStaticQueue ) )
265#endif /* configSUPPORT_STATIC_ALLOCATION */
266
345#define xQueueSendToFront( xQueue, pvItemToQueue, xTicksToWait ) \
346 xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_FRONT )
347
428#define xQueueSendToBack( xQueue, pvItemToQueue, xTicksToWait ) \
429 xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK )
430
513#define xQueueSend( xQueue, pvItemToQueue, xTicksToWait ) \
514 xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK )
515
597#define xQueueOverwrite( xQueue, pvItemToQueue ) \
598 xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), 0, queueOVERWRITE )
599
600
687 const void * const pvItemToQueue,
688 TickType_t xTicksToWait,
689 const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
690
785 void * const pvBuffer,
786 TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
787
821 void * const pvBuffer ) PRIVILEGED_FUNCTION;
822
914 void * const pvBuffer,
915 TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
916
933
952
968
1037#define xQueueSendToFrontFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) \
1038 xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_FRONT )
1039
1040
1109#define xQueueSendToBackFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) \
1110 xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK )
1111
1200#define xQueueOverwriteFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) \
1201 xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueOVERWRITE )
1202
1278#define xQueueSendFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) \
1279 xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK )
1280
1362 const void * const pvItemToQueue,
1363 BaseType_t * const pxHigherPriorityTaskWoken,
1364 const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
1366 BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
1367
1456 void * const pvBuffer,
1457 BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
1458
1459/*
1460 * Utilities to query queues that are safe to use from an ISR. These utilities
1461 * should be used only from within an ISR, or within a critical section.
1462 */
1466
1467#if ( configUSE_CO_ROUTINES == 1 )
1468
1469/*
1470 * The functions defined above are for passing data to and from tasks. The
1471 * functions below are the equivalents for passing data to and from
1472 * co-routines.
1473 *
1474 * These functions are called from the co-routine macro implementation and
1475 * should not be called directly from application code. Instead use the macro
1476 * wrappers defined within croutine.h.
1477 */
1478 BaseType_t xQueueCRSendFromISR( QueueHandle_t xQueue,
1479 const void * pvItemToQueue,
1480 BaseType_t xCoRoutinePreviouslyWoken );
1481 BaseType_t xQueueCRReceiveFromISR( QueueHandle_t xQueue,
1482 void * pvBuffer,
1483 BaseType_t * pxTaskWoken );
1484 BaseType_t xQueueCRSend( QueueHandle_t xQueue,
1485 const void * pvItemToQueue,
1486 TickType_t xTicksToWait );
1487 BaseType_t xQueueCRReceive( QueueHandle_t xQueue,
1488 void * pvBuffer,
1489 TickType_t xTicksToWait );
1490
1491#endif /* if ( configUSE_CO_ROUTINES == 1 ) */
1492
1493/*
1494 * For internal use only. Use xSemaphoreCreateMutex(),
1495 * xSemaphoreCreateCounting() or xSemaphoreGetMutexHolder() instead of calling
1496 * these functions directly.
1497 */
1499
1500#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
1501 QueueHandle_t xQueueCreateMutexStatic( const uint8_t ucQueueType,
1502 StaticQueue_t * pxStaticQueue ) PRIVILEGED_FUNCTION;
1503#endif
1504
1505#if ( configUSE_COUNTING_SEMAPHORES == 1 )
1506 QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount,
1507 const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;
1508#endif
1509
1510#if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )
1511 QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount,
1512 const UBaseType_t uxInitialCount,
1513 StaticQueue_t * pxStaticQueue ) PRIVILEGED_FUNCTION;
1514#endif
1515
1517 TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
1518
1519#if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) )
1521 TaskHandle_t xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;
1522#endif
1523
1524/*
1525 * For internal use only. Use xSemaphoreTakeRecursive() or
1526 * xSemaphoreGiveRecursive() instead of calling these functions directly.
1527 */
1529 TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
1531
1532/*
1533 * Reset a queue back to its original empty state. The return value is now
1534 * obsolete and is always set to pdPASS.
1535 */
1536#define xQueueReset( xQueue ) xQueueGenericReset( ( xQueue ), pdFALSE )
1537
1538/*
1539 * The registry is provided as a means for kernel aware debuggers to
1540 * locate queues, semaphores and mutexes. Call vQueueAddToRegistry() add
1541 * a queue, semaphore or mutex handle to the registry if you want the handle
1542 * to be available to a kernel aware debugger. If you are not using a kernel
1543 * aware debugger then this function can be ignored.
1544 *
1545 * configQUEUE_REGISTRY_SIZE defines the maximum number of handles the
1546 * registry can hold. configQUEUE_REGISTRY_SIZE must be greater than 0
1547 * within FreeRTOSConfig.h for the registry to be available. Its value
1548 * does not affect the number of queues, semaphores and mutexes that can be
1549 * created - just the number that the registry can hold.
1550 *
1551 * If vQueueAddToRegistry is called more than once with the same xQueue
1552 * parameter, the registry will store the pcQueueName parameter from the
1553 * most recent call to vQueueAddToRegistry.
1554 *
1555 * @param xQueue The handle of the queue being added to the registry. This
1556 * is the handle returned by a call to xQueueCreate(). Semaphore and mutex
1557 * handles can also be passed in here.
1558 *
1559 * @param pcQueueName The name to be associated with the handle. This is the
1560 * name that the kernel aware debugger will display. The queue registry only
1561 * stores a pointer to the string - so the string must be persistent (global or
1562 * preferably in ROM/Flash), not on the stack.
1563 */
1564#if ( configQUEUE_REGISTRY_SIZE > 0 )
1566 const char * pcQueueName ) PRIVILEGED_FUNCTION;
1567#endif
1568
1569/*
1570 * The registry is provided as a means for kernel aware debuggers to
1571 * locate queues, semaphores and mutexes. Call vQueueAddToRegistry() add
1572 * a queue, semaphore or mutex handle to the registry if you want the handle
1573 * to be available to a kernel aware debugger, and vQueueUnregisterQueue() to
1574 * remove the queue, semaphore or mutex from the register. If you are not using
1575 * a kernel aware debugger then this function can be ignored.
1576 *
1577 * @param xQueue The handle of the queue being removed from the registry.
1578 */
1579#if ( configQUEUE_REGISTRY_SIZE > 0 )
1581#endif
1582
1583/*
1584 * The queue registry is provided as a means for kernel aware debuggers to
1585 * locate queues, semaphores and mutexes. Call pcQueueGetName() to look
1586 * up and return the name of a queue in the queue registry from the queue's
1587 * handle.
1588 *
1589 * @param xQueue The handle of the queue the name of which will be returned.
1590 * @return If the queue is in the registry then a pointer to the name of the
1591 * queue is returned. If the queue is not in the registry then NULL is
1592 * returned.
1593 */
1594#if ( configQUEUE_REGISTRY_SIZE > 0 )
1596#endif
1597
1598/*
1599 * Generic version of the function used to create a queue using dynamic memory
1600 * allocation. This is called by other functions and macros that create other
1601 * RTOS objects that use the queue structure as their base.
1602 */
1603#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
1604 QueueHandle_t xQueueGenericCreate( const UBaseType_t uxQueueLength,
1605 const UBaseType_t uxItemSize,
1606 const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
1607#endif
1608
1609/*
1610 * Generic version of the function used to create a queue using dynamic memory
1611 * allocation. This is called by other functions and macros that create other
1612 * RTOS objects that use the queue structure as their base.
1613 */
1614#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
1615 QueueHandle_t xQueueGenericCreateStatic( const UBaseType_t uxQueueLength,
1616 const UBaseType_t uxItemSize,
1617 uint8_t * pucQueueStorage,
1618 StaticQueue_t * pxStaticQueue,
1619 const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
1620#endif
1621
1622/*
1623 * Generic version of the function used to retrieve the buffers of statically
1624 * created queues. This is called by other functions and macros that retrieve
1625 * the buffers of other statically created RTOS objects that use the queue
1626 * structure as their base.
1627 */
1628#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
1629 BaseType_t xQueueGenericGetStaticBuffers( QueueHandle_t xQueue,
1630 uint8_t ** ppucQueueStorage,
1631 StaticQueue_t ** ppxStaticQueue ) PRIVILEGED_FUNCTION;
1632#endif
1633
1634/*
1635 * Queue sets provide a mechanism to allow a task to block (pend) on a read
1636 * operation from multiple queues or semaphores simultaneously.
1637 *
1638 * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this
1639 * function.
1640 *
1641 * A queue set must be explicitly created using a call to xQueueCreateSet()
1642 * before it can be used. Once created, standard FreeRTOS queues and semaphores
1643 * can be added to the set using calls to xQueueAddToSet().
1644 * xQueueSelectFromSet() is then used to determine which, if any, of the queues
1645 * or semaphores contained in the set is in a state where a queue read or
1646 * semaphore take operation would be successful.
1647 *
1648 * Note 1: See the documentation on https://www.FreeRTOS.org/RTOS-queue-sets.html
1649 * for reasons why queue sets are very rarely needed in practice as there are
1650 * simpler methods of blocking on multiple objects.
1651 *
1652 * Note 2: Blocking on a queue set that contains a mutex will not cause the
1653 * mutex holder to inherit the priority of the blocked task.
1654 *
1655 * Note 3: An additional 4 bytes of RAM is required for each space in a every
1656 * queue added to a queue set. Therefore counting semaphores that have a high
1657 * maximum count value should not be added to a queue set.
1658 *
1659 * Note 4: A receive (in the case of a queue) or take (in the case of a
1660 * semaphore) operation must not be performed on a member of a queue set unless
1661 * a call to xQueueSelectFromSet() has first returned a handle to that set member.
1662 *
1663 * @param uxEventQueueLength Queue sets store events that occur on
1664 * the queues and semaphores contained in the set. uxEventQueueLength specifies
1665 * the maximum number of events that can be queued at once. To be absolutely
1666 * certain that events are not lost uxEventQueueLength should be set to the
1667 * total sum of the length of the queues added to the set, where binary
1668 * semaphores and mutexes have a length of 1, and counting semaphores have a
1669 * length set by their maximum count value. Examples:
1670 * + If a queue set is to hold a queue of length 5, another queue of length 12,
1671 * and a binary semaphore, then uxEventQueueLength should be set to
1672 * (5 + 12 + 1), or 18.
1673 * + If a queue set is to hold three binary semaphores then uxEventQueueLength
1674 * should be set to (1 + 1 + 1 ), or 3.
1675 * + If a queue set is to hold a counting semaphore that has a maximum count of
1676 * 5, and a counting semaphore that has a maximum count of 3, then
1677 * uxEventQueueLength should be set to (5 + 3), or 8.
1678 *
1679 * @return If the queue set is created successfully then a handle to the created
1680 * queue set is returned. Otherwise NULL is returned.
1681 */
1682#if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
1683 QueueSetHandle_t xQueueCreateSet( const UBaseType_t uxEventQueueLength ) PRIVILEGED_FUNCTION;
1684#endif
1685
1686/*
1687 * Adds a queue or semaphore to a queue set that was previously created by a
1688 * call to xQueueCreateSet().
1689 *
1690 * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this
1691 * function.
1692 *
1693 * Note 1: A receive (in the case of a queue) or take (in the case of a
1694 * semaphore) operation must not be performed on a member of a queue set unless
1695 * a call to xQueueSelectFromSet() has first returned a handle to that set member.
1696 *
1697 * @param xQueueOrSemaphore The handle of the queue or semaphore being added to
1698 * the queue set (cast to an QueueSetMemberHandle_t type).
1699 *
1700 * @param xQueueSet The handle of the queue set to which the queue or semaphore
1701 * is being added.
1702 *
1703 * @return If the queue or semaphore was successfully added to the queue set
1704 * then pdPASS is returned. If the queue could not be successfully added to the
1705 * queue set because it is already a member of a different queue set then pdFAIL
1706 * is returned.
1707 */
1708#if ( configUSE_QUEUE_SETS == 1 )
1709 BaseType_t xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore,
1711#endif
1712
1713/*
1714 * Removes a queue or semaphore from a queue set. A queue or semaphore can only
1715 * be removed from a set if the queue or semaphore is empty.
1716 *
1717 * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this
1718 * function.
1719 *
1720 * @param xQueueOrSemaphore The handle of the queue or semaphore being removed
1721 * from the queue set (cast to an QueueSetMemberHandle_t type).
1722 *
1723 * @param xQueueSet The handle of the queue set in which the queue or semaphore
1724 * is included.
1725 *
1726 * @return If the queue or semaphore was successfully removed from the queue set
1727 * then pdPASS is returned. If the queue was not in the queue set, or the
1728 * queue (or semaphore) was not empty, then pdFAIL is returned.
1729 */
1730#if ( configUSE_QUEUE_SETS == 1 )
1731 BaseType_t xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore,
1733#endif
1734
1735/*
1736 * xQueueSelectFromSet() selects from the members of a queue set a queue or
1737 * semaphore that either contains data (in the case of a queue) or is available
1738 * to take (in the case of a semaphore). xQueueSelectFromSet() effectively
1739 * allows a task to block (pend) on a read operation on all the queues and
1740 * semaphores in a queue set simultaneously.
1741 *
1742 * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this
1743 * function.
1744 *
1745 * Note 1: See the documentation on https://www.FreeRTOS.org/RTOS-queue-sets.html
1746 * for reasons why queue sets are very rarely needed in practice as there are
1747 * simpler methods of blocking on multiple objects.
1748 *
1749 * Note 2: Blocking on a queue set that contains a mutex will not cause the
1750 * mutex holder to inherit the priority of the blocked task.
1751 *
1752 * Note 3: A receive (in the case of a queue) or take (in the case of a
1753 * semaphore) operation must not be performed on a member of a queue set unless
1754 * a call to xQueueSelectFromSet() has first returned a handle to that set member.
1755 *
1756 * @param xQueueSet The queue set on which the task will (potentially) block.
1757 *
1758 * @param xTicksToWait The maximum time, in ticks, that the calling task will
1759 * remain in the Blocked state (with other tasks executing) to wait for a member
1760 * of the queue set to be ready for a successful queue read or semaphore take
1761 * operation.
1762 *
1763 * @return xQueueSelectFromSet() will return the handle of a queue (cast to
1764 * a QueueSetMemberHandle_t type) contained in the queue set that contains data,
1765 * or the handle of a semaphore (cast to a QueueSetMemberHandle_t type) contained
1766 * in the queue set that is available, or NULL if no such queue or semaphore
1767 * exists before before the specified block time expires.
1768 */
1769#if ( configUSE_QUEUE_SETS == 1 )
1770 QueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet,
1771 const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
1772#endif
1773
1774/*
1775 * A version of xQueueSelectFromSet() that can be used from an ISR.
1776 */
1777#if ( configUSE_QUEUE_SETS == 1 )
1778 QueueSetMemberHandle_t xQueueSelectFromSetFromISR( QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
1779#endif
1780
1781/* Not public API functions. */
1783 TickType_t xTicksToWait,
1784 const BaseType_t xWaitIndefinitely ) PRIVILEGED_FUNCTION;
1786 BaseType_t xNewQueue ) PRIVILEGED_FUNCTION;
1787
1788#if ( configUSE_TRACE_FACILITY == 1 )
1789 void vQueueSetQueueNumber( QueueHandle_t xQueue,
1790 UBaseType_t uxQueueNumber ) PRIVILEGED_FUNCTION;
1791#endif
1792
1793#if ( configUSE_TRACE_FACILITY == 1 )
1794 UBaseType_t uxQueueGetQueueNumber( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
1795#endif
1796
1797#if ( configUSE_TRACE_FACILITY == 1 )
1798 uint8_t ucQueueGetQueueType( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
1799#endif
1800
1803
1804/* *INDENT-OFF* */
1805#ifdef __cplusplus
1806 }
1807#endif
1808/* *INDENT-ON* */
1809
1810#endif /* QUEUE_H */
struct xSTATIC_QUEUE StaticQueue_t
#define vQueueAddToRegistry(xQueue, pcName)
Definition FreeRTOS.h:589
#define pcQueueGetName(xQueue)
Definition FreeRTOS.h:591
#define vQueueUnregisterQueue(xQueue)
Definition FreeRTOS.h:590
#define PRIVILEGED_FUNCTION
Definition mpu_wrappers.h:269
long BaseType_t
Definition portmacro.h:59
unsigned long UBaseType_t
Definition portmacro.h:60
uint16_t TickType_t
Definition portmacro.h:63
BaseType_t xQueueSemaphoreTake(QueueHandle_t xQueue, TickType_t xTicksToWait) PRIVILEGED_FUNCTION
Definition queue.c:1652
struct QueueDefinition * QueueSetHandle_t
Definition queue.h:58
BaseType_t xQueueGenericSendFromISR(QueueHandle_t xQueue, const void *const pvItemToQueue, BaseType_t *const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition) PRIVILEGED_FUNCTION
Definition queue.c:1157
BaseType_t xQueueGenericReset(QueueHandle_t xQueue, BaseType_t xNewQueue) PRIVILEGED_FUNCTION
Definition queue.c:303
UBaseType_t uxQueueMessagesWaitingFromISR(const QueueHandle_t xQueue) PRIVILEGED_FUNCTION
Definition queue.c:2238
BaseType_t xQueuePeek(QueueHandle_t xQueue, void *const pvBuffer, TickType_t xTicksToWait) PRIVILEGED_FUNCTION
Definition queue.c:1877
BaseType_t xQueueGiveMutexRecursive(QueueHandle_t xMutex) PRIVILEGED_FUNCTION
struct QueueDefinition * QueueHandle_t
Definition queue.h:51
void vQueueDelete(QueueHandle_t xQueue) PRIVILEGED_FUNCTION
Definition queue.c:2254
BaseType_t xQueueTakeMutexRecursive(QueueHandle_t xMutex, TickType_t xTicksToWait) PRIVILEGED_FUNCTION
BaseType_t xQueueGenericSend(QueueHandle_t xQueue, const void *const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition) PRIVILEGED_FUNCTION
Definition queue.c:939
BaseType_t xQueueIsQueueFullFromISR(const QueueHandle_t xQueue) PRIVILEGED_FUNCTION
Definition queue.c:2680
BaseType_t xQueueIsQueueEmptyFromISR(const QueueHandle_t xQueue) PRIVILEGED_FUNCTION
Definition queue.c:2635
UBaseType_t uxQueueSpacesAvailable(const QueueHandle_t xQueue) PRIVILEGED_FUNCTION
Definition queue.c:2217
UBaseType_t uxQueueGetQueueLength(QueueHandle_t xQueue) PRIVILEGED_FUNCTION
Definition queue.c:2353
void vQueueWaitForMessageRestricted(QueueHandle_t xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely) PRIVILEGED_FUNCTION
BaseType_t xQueuePeekFromISR(QueueHandle_t xQueue, void *const pvBuffer) PRIVILEGED_FUNCTION
Definition queue.c:2135
QueueHandle_t xQueueCreateMutex(const uint8_t ucQueueType) PRIVILEGED_FUNCTION
BaseType_t xQueueReceiveFromISR(QueueHandle_t xQueue, void *const pvBuffer, BaseType_t *const pxHigherPriorityTaskWoken) PRIVILEGED_FUNCTION
Definition queue.c:2035
BaseType_t xQueueGiveFromISR(QueueHandle_t xQueue, BaseType_t *const pxHigherPriorityTaskWoken) PRIVILEGED_FUNCTION
Definition queue.c:1329
UBaseType_t uxQueueMessagesWaiting(const QueueHandle_t xQueue) PRIVILEGED_FUNCTION
Definition queue.c:2197
BaseType_t xQueueReceive(QueueHandle_t xQueue, void *const pvBuffer, TickType_t xTicksToWait) PRIVILEGED_FUNCTION
Definition queue.c:1502
UBaseType_t uxQueueGetQueueItemSize(QueueHandle_t xQueue) PRIVILEGED_FUNCTION
Definition queue.c:2343
struct QueueDefinition * QueueSetMemberHandle_t
Definition queue.h:65
Definition queue.c:104
UBaseType_t uxItemSize
Definition queue.c:119
SemaphoreData_t xSemaphore
Definition queue.c:111
QueuePointers_t xQueue
Definition queue.c:110
struct tskTaskControlBlock * TaskHandle_t
Definition task.h:92