11 #ifndef OS_GENERIC_PRIORITYMEMQUEUE_HPP 12 #define OS_GENERIC_PRIORITYMEMQUEUE_HPP 101 return this->m_priorityMap[priority];
252 static bool s_requirePrioritySizing;
253 static std::atomic<bool>* s_configsUsed;
254 static bool s_configured;
322 #endif // OS_GENERIC_PRIORITYMEMQUEUE_HPP FwEnumStoreType m_allocatorId
PriorityMemQueue & operator=(const QueueInterface &other) override=delete
assignment operator is forbidden
I8 m_priorityMap[Queue::MAX_PRIORITIES]
void enablePriority(FwQueuePriorityType priority)
Enable a specific priority (in the handle )
std::atomic< U32 > m_priorityMask
PlatformSizeType FwSizeType
FwQueuePriorityType priority
void teardown() override
teardown the queue
Status
status returned from the queue send function
static constexpr FwSizeType MAX_PRIORITIES
Configuration for a priority level.
AtomicQueue-based priority queue implementation.
QueueHandle parent class.
int8_t I8
8-bit signed integer
static void configure(QueueConfig *queueConfigs, FwSizeType numQueueConfigs, bool required, FwEnumStoreType allocatorId)
Register per-priority sizes for component instances which do queueing with multiple priorities...
static constexpr FwSizeType DEFAULT_PRIORITY
QueueHandle * getHandle() override
return the underlying queue handle (implementation specific)
virtual ~PriorityMemQueue()
default queue destructor
Types::AtomicQueue * m_atomicQueues
PriorityMemQueueHandle m_handle
A lock-free MPMC FIFO circular buffer with fixed-size buffer storage.
Status receive(U8 *destination, FwSizeType capacity, BlockingType blockType, FwSizeType &actualSize, FwQueuePriorityType &priority) override
receive a message from the queue
static void resetConfig()
Reset static configuration (test environments only)
FwSizeType getMessagesAvailable() const override
get number of messages available
void init()
Initialize the handle.
void deallocateArrays(Fw::MemAllocator &allocator, FwEnumStoreType allocatorId)
Deallocate arrays for priority data.
Status create(FwEnumStoreType id, const Fw::ConstStringBase &name, FwSizeType depth, FwSizeType messageSize) override
create queue storage
PriorityMemQueueHandle & operator=(const PriorityMemQueueHandle &)=delete
bool allocateArrays(Fw::MemAllocator &allocator, FwEnumStoreType allocatorId)
Allocate arrays for priority data (sparse allocation) Uses m_priorityMap to determine which prioritie...
Os::CountingSemaphore * m_notEmptySem
uint8_t U8
8-bit unsigned integer
Configuration for a queue with multiple priorities.
PlatformQueuePriorityType FwQueuePriorityType
The type of queue priorities used.
PriorityMemQueueHandle()
Constructor.
critical data stored for priority queue
Memory Allocation base class.
I8 getPriorityIndex(FwQueuePriorityType priority) const
Get array index for a priority (inline for performance)
FwQueuePriorityType m_maxPriority
A read-only abstract superclass for StringBase.
void disablePriority(FwQueuePriorityType priority)
Disable a specific priority.
void teardownInternal()
teardown the queue
Defines a base class for a memory allocator for classes.
std::atomic< U32 > * m_highWaterMarks
Status send(const U8 *buffer, FwSizeType size, FwQueuePriorityType priority, BlockingType blockType) override
send a message into the queue
PriorityMemQueue()
queue interface constructor - initializes handle
QueuePriorityConfig * priorityConfigs
FwEnumStoreType instanceId
FwSizeType m_numActivePriorities
FwSizeType getMessageHighWaterMark() const override
get maximum messages stored at any given time