|
SuperTinyKernel™ RTOS 1.08.x
Lightweight, high-performance, deterministic, bare-metal C++ RTOS for resource-constrained embedded systems. MIT Open Source License.
|
Fixed-capacity, fixed-message-size FIFO queue for inter-task communication. More...
#include <stk_sync_msgqueue.h>
Public Member Functions | |
| MessageQueue (uint8_t *buf, size_t capacity, size_t msg_size) | |
| Constructor. | |
| ~MessageQueue ()=default | |
| Destructor. | |
| EWaitResult | PutEx (const void *msg_ptr, Timeout timeout_ticks=WAIT_INFINITE) |
| Put a message into the back of the queue (FIFO order), preserving the full wait outcome. | |
| bool | Put (const void *msg_ptr, Timeout timeout_ticks=WAIT_INFINITE) |
| Put a message into the back of the queue (FIFO order). | |
| bool | TryPut (const void *msg_ptr) |
| Attempt to put a message into the back of the queue without blocking. | |
| EWaitResult | PutFrontEx (const void *msg_ptr, Timeout timeout_ticks=WAIT_INFINITE) |
| Put a message into the front of the queue (LIFO / priority-insert order), preserving the full wait outcome. | |
| bool | PutFront (const void *msg_ptr, Timeout timeout_ticks=WAIT_INFINITE) |
| Put a message into the front of the queue (LIFO / priority-insert order). | |
| bool | TryPutFront (const void *msg_ptr) |
| Attempt to put a message into the front of the queue without blocking. | |
| EWaitResult | GetEx (void *msg_ptr, Timeout timeout_ticks=WAIT_INFINITE) |
| Get a message from the queue, preserving the full wait outcome. | |
| bool | Get (void *msg_ptr, Timeout timeout_ticks=WAIT_INFINITE) |
| Get a message from the queue. | |
| bool | TryGet (void *msg_ptr) |
| Attempt to get a message from the queue without blocking. | |
| EWaitResult | PeekEx (void *msg_ptr, Timeout timeout_ticks=WAIT_INFINITE) |
| Peek at the next message to be delivered without removing it, preserving the full wait outcome. | |
| bool | Peek (void *msg_ptr, Timeout timeout_ticks=WAIT_INFINITE) |
Peek at the next message to be delivered (the one Get() returns next) without removing it. | |
| bool | TryPeek (void *msg_ptr) |
| Attempt to peek at the next message without blocking. | |
| EWaitResult | PeekFrontEx (void *msg_ptr, Timeout timeout_ticks=WAIT_INFINITE) |
| Peek at the front of the queue without removing it, preserving the full wait outcome. | |
| bool | PeekFront (void *msg_ptr, Timeout timeout_ticks=WAIT_INFINITE) |
Peek at the front of the queue (the message Get() returns next) without removing it. | |
| bool | TryPeekFront (void *msg_ptr) |
| Attempt to peek at the front message without blocking. | |
| void | Reset () |
| Discard all messages and reset the queue to the empty state. | |
| size_t | GetCapacity () const |
| Get the maximum number of messages the queue can hold. | |
| size_t | GetMsgSize () const |
| Get the size of each message in bytes. | |
| size_t | GetCount () const |
| Get the current number of messages in the queue. | |
| size_t | GetSpace () const |
| Get the number of free slots currently available. | |
| uint8_t * | GetBuffer () |
| Get pointer to the message buffer. | |
| bool | IsEmpty () const |
| Check whether the queue is currently empty. | |
| bool | IsFull () const |
| Check whether the queue is currently full. | |
| bool | IsStorageValid () const |
| Verify that the backing storage is valid and the pool is ready for use. | |
| void | SetTraceName (const char *name) |
| Set name. | |
| const char * | GetTraceName () const |
| Get name. | |
Static Public Attributes | |
| static const size_t | CAPACITY_MAX = 0xFFFEU |
| Max capacity supported (number of messages). | |
Private Member Functions | |
| MessageQueue (const MessageQueue &)=delete | |
| MessageQueue & | operator= (const MessageQueue &)=delete |
| uint8_t * | Slot (size_t idx) const |
| size_t | Next (size_t idx) const |
| size_t | Prev (size_t idx) const |
| EWaitResult | WaitNotFull (IMutex &cs, Timeout timeout_ticks) |
| EWaitResult | WaitNotEmpty (IMutex &cs, Timeout timeout_ticks) |
Private Attributes | |
| uint8_t * | m_buffer |
| flat byte ring-buffer: capacity slots of msg_size bytes each | |
| const size_t | m_capacity |
| maximum number of messages stored in the queue | |
| const size_t | m_msg_size |
| size of each message in bytes | |
| size_t | m_count |
| current number of messages stored in the queue | |
| size_t | m_head |
| write index (next slot to be written by Put()) | |
| size_t | m_tail |
| read index (next slot to be read by Get()) | |
| ConditionVariable | m_cv_not_empty |
| signaled by Put() when the queue transitions from empty | |
| ConditionVariable | m_cv_not_full |
| signaled by Get()/Reset() when the queue is no longer full | |
Fixed-capacity, fixed-message-size FIFO queue for inter-task communication.
MessageQueue provides a synchronized ring-buffer that transports opaque, fixed-size byte messages between tasks. It follows the following blocking semantics:
Put() blocks if the queue is full until space becomes available or the timeout expires.Get() blocks if the queue is empty until a message is produced or the timeout expires.Like stk::sync::Pipe (and unlike the type-safe stk::sync::PipeT), MessageQueue is parameterised on a byte count (MSG) rather than on an element type. This makes it suitable for passing heterogeneous or C-ABI structs without requiring the message type to be copyable via the C++ assignment operator. The message payload is always copied with memcpy. In addition to the plain FIFO operations it supports front insertion (PutFront()) and non-destructive reads (Peek()).
Put(), PutFront(), Get(), Peek(), PeekFront()) collapse a timeout and a cancellation (IKernel::CancelTaskWait()) into the same failure result. Use the *Ex() variants (PutEx(), PutFrontEx(), GetEx(), PeekEx(), PeekFrontEx()) if the caller needs to tell them apart.Definition at line 62 of file stk_sync_msgqueue.h.
|
inlineexplicit |
Constructor.
| [in] | buf | Pointer to the externally-allocated storage. Must be at least capacity * msg_size bytes. |
| [in] | capacity | Maximum number of messages [1, CAPACITY_MAX]. |
| [in] | msg_size | Size of each message in bytes (>= 1). |
Definition at line 416 of file stk_sync_msgqueue.h.
References CAPACITY_MAX, m_buffer, m_capacity, m_count, m_head, m_msg_size, m_tail, and STK_ASSERT.
Referenced by MessageQueue(), and stk::sync::MessageQueueT< N, MSG >::MessageQueueT().
|
default |
Destructor.
References STK_VIRT_DTOR, and stk::WAIT_INFINITE.
Referenced by tx_queue_delete().
|
privatedelete |
|
inline |
Get a message from the queue.
Copies msg_size bytes from the oldest slot in the ring buffer into the buffer pointed to by msg_ptr. If the queue is empty the calling task is suspended until a message is produced or the timeout expires.
| [out] | msg_ptr | Destination buffer for the retrieved message (must be at least msg_size bytes). |
| [in] | timeout_ticks | Maximum time to wait for a message (ticks). Use WAIT_INFINITE to block indefinitely, NO_WAIT for a non-blocking attempt. |
NO_WAIT, ISR-unsafe otherwise. true if a message was successfully retrieved, false otherwise (timeout, cancellation or NO_WAIT on an empty queue). Use GetEx() to tell these apart. Definition at line 204 of file stk_sync_msgqueue.h.
References GetEx(), stk::WAIT_INFINITE, and stk::WAIT_RESULT_SIGNAL.
Referenced by stk_msgq_get(), TryGet(), xMessageBufferReceive(), and xQueueSelectFromSet().
|
inline |
Get pointer to the message buffer.
Definition at line 355 of file stk_sync_msgqueue.h.
References m_buffer.
Referenced by stk_msgq_get_buffer().
|
inline |
Get the maximum number of messages the queue can hold.
Definition at line 330 of file stk_sync_msgqueue.h.
References m_capacity.
Referenced by osMessageQueueGetCapacity(), and stk_msgq_get_capacity().
|
inline |
Get the current number of messages in the queue.
size_t-aligned read is atomic. Definition at line 343 of file stk_sync_msgqueue.h.
References m_count.
Referenced by osMessageQueueGetCount(), stk_msgq_get_count(), tx_queue_info_get(), uxQueueMessagesWaiting(), and uxQueueMessagesWaitingFromISR().
|
inline |
Get a message from the queue, preserving the full wait outcome.
Identical to Get(), except the caller gets the raw EWaitResult, so a cancellation (via IKernel::CancelTaskWait()) can be distinguished from a timeout.
| [out] | msg_ptr | Destination buffer for the retrieved message (must be at least msg_size bytes). |
| [in] | timeout_ticks | Maximum time to wait for a message (ticks). Use WAIT_INFINITE to block indefinitely, NO_WAIT for a non-blocking attempt. |
NO_WAIT, ISR-unsafe otherwise. WAIT_RESULT_SIGNAL if a message was retrieved, WAIT_RESULT_TIMEOUT if no message became available before the timeout expired (or NO_WAIT was passed on an empty queue), WAIT_RESULT_CANCELED if the wait was cancelled via IKernel::CancelTaskWait(), WAIT_RESULT_FAIL if the kernel rejected the wait. Nothing is dequeued or copied on a non-signal result. Definition at line 562 of file stk_sync_msgqueue.h.
References m_count, m_cv_not_full, m_msg_size, m_tail, Next(), Slot(), STK_ASSERT, STK_MEMCPY(), stk::WAIT_RESULT_SIGNAL, and WaitNotEmpty().
Referenced by Get(), and stk_msgq_get_ex().
|
inline |
Get the size of each message in bytes.
Definition at line 336 of file stk_sync_msgqueue.h.
References m_msg_size.
Referenced by osMessageQueueGetMsgSize(), and stk_msgq_get_msg_size().
|
inline |
Get the number of free slots currently available.
Definition at line 349 of file stk_sync_msgqueue.h.
References m_capacity, and m_count.
Referenced by osMessageQueueGetSpace(), stk_msgq_get_space(), tx_queue_info_get(), and uxQueueSpacesAvailable().
|
inlineinherited |
Get name.
NULL if not set or if STK_SYNC_DEBUG_NAMES is 0. Definition at line 582 of file stk_common.h.
|
inline |
Check whether the queue is currently empty.
true if the queue contains no messages. Definition at line 361 of file stk_sync_msgqueue.h.
References m_count.
Referenced by stk_msgq_is_empty(), xQueueAddToSet(), and xQueueRemoveFromSet().
|
inline |
Check whether the queue is currently full.
true if the queue contains capacity messages. Definition at line 367 of file stk_sync_msgqueue.h.
References m_capacity, and m_count.
Referenced by stk_msgq_is_full().
|
inline |
Verify that the backing storage is valid and the pool is ready for use.
Always true for pools constructed with external storage. For heap-constructed queue, false if operator new failed. Must be checked after the heap constructor when operating without exceptions (the typical embedded configuration).
true if the queue is ready for use. Definition at line 377 of file stk_sync_msgqueue.h.
References m_buffer.
Referenced by osMessageQueueNew(), stk_msgq_is_storage_valid(), xMessageBufferCreate(), xMessageBufferCreateWithCallback(), and xQueueCreate().
|
inlineprivate |
Definition at line 386 of file stk_sync_msgqueue.h.
References m_capacity.
Referenced by GetEx(), and PutEx().
|
privatedelete |
|
inline |
Peek at the next message to be delivered (the one Get() returns next) without removing it.
Copies msg_size bytes from the oldest slot in the ring buffer into the buffer pointed to by msg_ptr, leaving the message in place so that a subsequent Get() will return the same message. If the queue is empty the calling task is suspended until a message is produced or the timeout expires.
| [out] | msg_ptr | Destination buffer for the peeked message (must be at least msg_size bytes). |
| [in] | timeout_ticks | Maximum time to wait for a message (ticks). Use WAIT_INFINITE to block indefinitely, NO_WAIT for a non-blocking attempt. |
NO_WAIT, ISR-unsafe otherwise. true if a message was successfully peeked, false otherwise (timeout, cancellation or NO_WAIT on an empty queue). Use PeekEx() to tell these apart. Get() waiter queued behind a Peek() waiter is not left blocked while a message is available. Definition at line 252 of file stk_sync_msgqueue.h.
References PeekEx(), stk::WAIT_INFINITE, and stk::WAIT_RESULT_SIGNAL.
Referenced by stk_msgq_peek(), and TryPeek().
|
inline |
Peek at the next message to be delivered without removing it, preserving the full wait outcome.
Identical to Peek(), except the caller gets the raw EWaitResult, so a cancellation (via IKernel::CancelTaskWait()) can be distinguished from a timeout.
| [out] | msg_ptr | Destination buffer for the peeked message (must be at least msg_size bytes). |
| [in] | timeout_ticks | Maximum time to wait for a message (ticks). Use WAIT_INFINITE to block indefinitely, NO_WAIT for a non-blocking attempt. |
NO_WAIT, ISR-unsafe otherwise. GetEx(). Nothing is copied on a non-signal result. Definition at line 586 of file stk_sync_msgqueue.h.
References m_cv_not_empty, m_msg_size, m_tail, Slot(), STK_ASSERT, STK_MEMCPY(), stk::WAIT_RESULT_SIGNAL, and WaitNotEmpty().
Referenced by Peek(), and stk_msgq_peek_ex().
|
inline |
Peek at the front of the queue (the message Get() returns next) without removing it.
Copies msg_size bytes from the read slot (the one Get() would return next) into the buffer pointed to by msg_ptr, leaving the message in place. Because PutFront() inserts at the read slot, this is the most recently PutFront()-inserted message if one is still pending, otherwise the oldest Put() message. The behavior is identical to Peek(); this method exists for symmetry with PutFront(). If the queue is empty the calling task is suspended until a message is produced or the timeout expires.
| [out] | msg_ptr | Destination buffer for the peeked message (must be at least msg_size bytes). |
| [in] | timeout_ticks | Maximum time to wait for a message (ticks). Use WAIT_INFINITE to block indefinitely, NO_WAIT for a non-blocking attempt. |
NO_WAIT, ISR-unsafe otherwise. true if a message was successfully peeked, false otherwise (timeout, cancellation or NO_WAIT on an empty queue). Use PeekFrontEx() to tell these apart. Definition at line 300 of file stk_sync_msgqueue.h.
References PeekFrontEx(), stk::WAIT_INFINITE, and stk::WAIT_RESULT_SIGNAL.
Referenced by stk_msgq_peekfront(), and TryPeekFront().
|
inline |
Peek at the front of the queue without removing it, preserving the full wait outcome.
Identical to PeekFront(), except the caller gets the raw EWaitResult, so a cancellation (via IKernel::CancelTaskWait()) can be distinguished from a timeout.
| [out] | msg_ptr | Destination buffer for the peeked message (must be at least msg_size bytes). |
| [in] | timeout_ticks | Maximum time to wait for a message (ticks). Use WAIT_INFINITE to block indefinitely, NO_WAIT for a non-blocking attempt. |
NO_WAIT, ISR-unsafe otherwise. GetEx(). Nothing is copied on a non-signal result. Definition at line 613 of file stk_sync_msgqueue.h.
References m_cv_not_empty, m_msg_size, m_tail, Slot(), STK_ASSERT, STK_MEMCPY(), stk::WAIT_RESULT_SIGNAL, and WaitNotEmpty().
Referenced by PeekFront(), and stk_msgq_peekfront_ex().
|
inlineprivate |
Definition at line 390 of file stk_sync_msgqueue.h.
References m_capacity.
Referenced by PutFrontEx().
|
inline |
Put a message into the back of the queue (FIFO order).
Copies msg_size bytes from msg_ptr into the next available slot in the ring buffer. If the queue is full the calling task is suspended until space becomes available or the timeout expires.
| [in] | msg_ptr | Pointer to the message payload (must be at least msg_size bytes). |
| [in] | timeout_ticks | Maximum time to wait for a free slot (ticks). Use WAIT_INFINITE to block indefinitely, NO_WAIT for a non-blocking attempt. |
NO_WAIT, ISR-unsafe otherwise. true if the message was successfully enqueued, false otherwise (timeout, cancellation or NO_WAIT on a full queue). Use PutEx() to tell these apart. Definition at line 114 of file stk_sync_msgqueue.h.
References PutEx(), stk::WAIT_INFINITE, and stk::WAIT_RESULT_SIGNAL.
Referenced by stk_msgq_put(), TryPut(), xMessageBufferSend(), and xQueueSend().
|
inline |
Put a message into the back of the queue (FIFO order), preserving the full wait outcome.
Identical to Put(), except the caller gets the raw EWaitResult, so a cancellation (via IKernel::CancelTaskWait()) can be distinguished from a timeout.
| [in] | msg_ptr | Pointer to the message payload (must be at least msg_size bytes). |
| [in] | timeout_ticks | Maximum time to wait for a free slot (ticks). Use WAIT_INFINITE to block indefinitely, NO_WAIT for a non-blocking attempt. |
NO_WAIT, ISR-unsafe otherwise. WAIT_RESULT_SIGNAL if the message was enqueued, WAIT_RESULT_TIMEOUT if no slot became available before the timeout expired (or NO_WAIT was passed on a full queue), WAIT_RESULT_CANCELED if the wait was cancelled via IKernel::CancelTaskWait(), WAIT_RESULT_FAIL if the kernel rejected the wait. Nothing is enqueued on a non-signal result. Definition at line 509 of file stk_sync_msgqueue.h.
References CAPACITY_MAX, m_count, m_cv_not_empty, m_head, m_msg_size, Next(), Slot(), STK_ASSERT, STK_MEMCPY(), stk::WAIT_RESULT_SIGNAL, and WaitNotFull().
Referenced by Put(), anonymous_namespace{threadx_stk.cpp}::QueueSend(), and stk_msgq_put_ex().
|
inline |
Put a message into the front of the queue (LIFO / priority-insert order).
Copies msg_size bytes from msg_ptr into the slot immediately before the current read pointer, making it the next message that Get() will return. If the queue is full the calling task is suspended until space becomes available or the timeout expires.
| [in] | msg_ptr | Pointer to the message payload (must be at least msg_size bytes). |
| [in] | timeout_ticks | Maximum time to wait for a free slot (ticks). Use WAIT_INFINITE to block indefinitely, NO_WAIT for a non-blocking attempt. |
NO_WAIT, ISR-unsafe otherwise. true if the message was successfully enqueued at the front, false otherwise (timeout, cancellation or NO_WAIT on a full queue). Use PutFrontEx() to tell these apart. Definition at line 157 of file stk_sync_msgqueue.h.
References PutFrontEx(), stk::WAIT_INFINITE, and stk::WAIT_RESULT_SIGNAL.
Referenced by stk_msgq_putfront(), TryPutFront(), and xQueueSendToFront().
|
inline |
Put a message into the front of the queue (LIFO / priority-insert order), preserving the full wait outcome.
Identical to PutFront(), except the caller gets the raw EWaitResult, so a cancellation (via IKernel::CancelTaskWait()) can be distinguished from a timeout.
| [in] | msg_ptr | Pointer to the message payload (must be at least msg_size bytes). |
| [in] | timeout_ticks | Maximum time to wait for a free slot (ticks). Use WAIT_INFINITE to block indefinitely, NO_WAIT for a non-blocking attempt. |
NO_WAIT, ISR-unsafe otherwise. PutEx(). Nothing is enqueued on a non-signal result. Definition at line 534 of file stk_sync_msgqueue.h.
References CAPACITY_MAX, m_count, m_cv_not_empty, m_msg_size, m_tail, Prev(), Slot(), STK_ASSERT, STK_MEMCPY(), stk::WAIT_RESULT_SIGNAL, and WaitNotFull().
Referenced by PutFront(), anonymous_namespace{threadx_stk.cpp}::QueueSend(), and stk_msgq_putfront_ex().
|
inline |
Discard all messages and reset the queue to the empty state.
Resets the head, tail and count to zero. Any tasks blocked in Put() are woken so they can re-evaluate and enqueue their messages into the now-empty queue.
Definition at line 640 of file stk_sync_msgqueue.h.
References m_count, m_cv_not_full, m_head, and m_tail.
Referenced by stk_msgq_reset(), tx_queue_flush(), xMessageBufferReset(), xMessageBufferResetFromISR(), xQueueOverwrite(), and xQueueOverwriteFromISR().
|
inlineinherited |
Set name.
| [in] | name | Null-terminated string or NULL. |
Definition at line 570 of file stk_common.h.
References STK_UNUSED.
Referenced by stk::memory::BlockMemoryPool::BlockMemoryPool(), stk::memory::BlockMemoryPool::BlockMemoryPool(), stk::memory::BytePool::BytePool(), stk::memory::BytePool::BytePool(), tx_block_pool_create(), tx_event_flags_create(), tx_mutex_create(), tx_queue_create(), and tx_semaphore_create().
|
inlineprivate |
Definition at line 383 of file stk_sync_msgqueue.h.
References m_buffer, and m_msg_size.
Referenced by GetEx(), PeekEx(), PeekFrontEx(), PutEx(), and PutFrontEx().
|
inline |
Attempt to get a message from the queue without blocking.
Dequeues a message only if one is immediately available. Returns false instantly if the queue is empty.
| [out] | msg_ptr | Destination buffer for the retrieved message. |
true if a message was retrieved, false if the queue was empty. Definition at line 217 of file stk_sync_msgqueue.h.
References Get(), and stk::NO_WAIT.
Referenced by stk_msgq_tryget(), xMessageBufferReceiveFromISR(), xMessageBufferReset(), xMessageBufferResetFromISR(), and xQueueSelectFromSetFromISR().
|
inline |
Attempt to peek at the next message without blocking.
Copies the oldest message into msg_ptr only if one is immediately available. The message is not removed from the queue. Returns false instantly if the queue is empty.
| [out] | msg_ptr | Destination buffer for the peeked message. |
true if a message was peeked, false if the queue was empty. Definition at line 266 of file stk_sync_msgqueue.h.
References stk::NO_WAIT, and Peek().
Referenced by stk_msgq_trypeek(), and xMessageBufferNextLengthBytes().
|
inline |
Attempt to peek at the front message without blocking.
Copies the message that Get() would return next into msg_ptr only if one is immediately available. The message is not removed from the queue. Returns false instantly if the queue is empty.
| [out] | msg_ptr | Destination buffer for the peeked message. |
true if a message was peeked, false if the queue was empty. Definition at line 314 of file stk_sync_msgqueue.h.
References stk::NO_WAIT, and PeekFront().
Referenced by stk_msgq_trypeekfront().
|
inline |
Attempt to put a message into the back of the queue without blocking.
Enqueues the message only if a free slot is immediately available. Returns false instantly if the queue is full.
| [in] | msg_ptr | Pointer to the message payload. |
true if the message was enqueued, false if the queue was full. Definition at line 127 of file stk_sync_msgqueue.h.
References stk::NO_WAIT, and Put().
Referenced by stk_msgq_tryput(), xMessageBufferReceive(), xMessageBufferSendFromISR(), xQueueOverwrite(), xQueueOverwriteFromISR(), and xQueueSendFromISR().
|
inline |
Attempt to put a message into the front of the queue without blocking.
Enqueues the message at the front only if a free slot is immediately available. Returns false instantly if the queue is full.
| [in] | msg_ptr | Pointer to the message payload. |
true if the message was enqueued at the front, false if the queue was full. Definition at line 171 of file stk_sync_msgqueue.h.
References stk::NO_WAIT, and PutFront().
Referenced by stk_msgq_tryputfront(), xMessageBufferReceiveFromISR(), and xQueueSendToFrontFromISR().
|
inlineprivate |
Definition at line 471 of file stk_sync_msgqueue.h.
References stk::GetTicks(), m_count, m_cv_not_empty, stk::NO_WAIT, stk::WAIT_INFINITE, and stk::WAIT_RESULT_SIGNAL.
Referenced by GetEx(), PeekEx(), and PeekFrontEx().
|
inlineprivate |
Definition at line 434 of file stk_sync_msgqueue.h.
References stk::GetTicks(), m_capacity, m_count, m_cv_not_full, stk::NO_WAIT, stk::WAIT_INFINITE, and stk::WAIT_RESULT_SIGNAL.
Referenced by PutEx(), and PutFrontEx().
|
static |
Max capacity supported (number of messages).
Definition at line 67 of file stk_sync_msgqueue.h.
Referenced by MessageQueue(), osMessageQueueNew(), PutEx(), PutFrontEx(), tx_queue_create(), xQueueCreate(), xQueueCreateSet(), and xQueueCreateStatic().
|
private |
flat byte ring-buffer: capacity slots of msg_size bytes each
Definition at line 402 of file stk_sync_msgqueue.h.
Referenced by GetBuffer(), IsStorageValid(), MessageQueue(), and Slot().
|
private |
maximum number of messages stored in the queue
Definition at line 403 of file stk_sync_msgqueue.h.
Referenced by GetCapacity(), GetSpace(), IsFull(), MessageQueue(), Next(), Prev(), and WaitNotFull().
|
private |
current number of messages stored in the queue
Definition at line 405 of file stk_sync_msgqueue.h.
Referenced by GetCount(), GetEx(), GetSpace(), IsEmpty(), IsFull(), MessageQueue(), PutEx(), PutFrontEx(), Reset(), WaitNotEmpty(), and WaitNotFull().
|
private |
signaled by Put() when the queue transitions from empty
Definition at line 408 of file stk_sync_msgqueue.h.
Referenced by PeekEx(), PeekFrontEx(), PutEx(), PutFrontEx(), and WaitNotEmpty().
|
private |
signaled by Get()/Reset() when the queue is no longer full
Definition at line 409 of file stk_sync_msgqueue.h.
Referenced by GetEx(), Reset(), and WaitNotFull().
|
private |
write index (next slot to be written by Put())
Definition at line 406 of file stk_sync_msgqueue.h.
Referenced by MessageQueue(), PutEx(), and Reset().
|
private |
size of each message in bytes
Definition at line 404 of file stk_sync_msgqueue.h.
Referenced by GetEx(), GetMsgSize(), MessageQueue(), PeekEx(), PeekFrontEx(), PutEx(), PutFrontEx(), and Slot().
|
private |
read index (next slot to be read by Get())
Definition at line 407 of file stk_sync_msgqueue.h.
Referenced by GetEx(), MessageQueue(), PeekEx(), PeekFrontEx(), PutFrontEx(), and Reset().