F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
Os::Generic Namespace Reference

Namespaces

 Queue
 

Classes

class  PriorityMemQueue
 AtomicQueue-based priority queue implementation. More...
 
struct  PriorityMemQueueHandle
 critical data stored for priority queue More...
 
class  PriorityQueue
 generic priority queue implementation More...
 
struct  PriorityQueueHandle
 critical data stored for priority queue More...
 
struct  UsedTotal
 Generic used/total struct. More...
 

Enumerations

enum  Status { OP_OK, ERROR }
 Generic OK/ERROR status. More...
 

Functions

static constexpr U32 priorityBitMask (FwQueuePriorityType priority)
 Get the bit mask for a priority. More...
 
static I32 findMSB (U32 value)
 Find most significant bit set (IPC-style priority finding) More...
 
static void validateQueueConfigs (PriorityMemQueue::QueueConfig *queueConfigs, FwSizeType numQueueConfigs)
 Validate queue configuration structures. More...
 
static Types::AtomicQueueresolvePriorityQueue (PriorityMemQueueHandle &handle, FwQueuePriorityType &priority, FwEnumStoreType queueId, bool requirePrioritySizing)
 Resolve priority to a valid AtomicQueue, fallback to DEFAULT if needed. More...
 
static void updateHighWaterMark (std::atomic< U32 > *highWaterMarks, FwSizeType index, U32 currentDepth, FwEnumStoreType queueId)
 Update per-priority high water mark atomically. More...
 

Variables

constexpr U32 LOOP_GUARD_LIMIT = 2000
 

Enumeration Type Documentation

◆ Status

Generic OK/ERROR status.

Enumerator
OP_OK 

Operation succeeded.

ERROR 

Operation failed.

Definition at line 26 of file Os.hpp.

Function Documentation

◆ findMSB()

static I32 Os::Generic::findMSB ( U32  value)
inlinestatic

Find most significant bit set (IPC-style priority finding)

Parameters
valuebit mask to search
Returns
bit position of MSB, or -1 if no bits set

Definition at line 189 of file PriorityMemQueue.cpp.

◆ priorityBitMask()

static constexpr U32 Os::Generic::priorityBitMask ( FwQueuePriorityType  priority)
static

Get the bit mask for a priority.

Parameters
prioritypriority to get mask for
Returns
bit mask with the priority bit set

Definition at line 54 of file PriorityMemQueue.cpp.

◆ resolvePriorityQueue()

static Types::AtomicQueue* Os::Generic::resolvePriorityQueue ( PriorityMemQueueHandle handle,
FwQueuePriorityType priority,
FwEnumStoreType  queueId,
bool  requirePrioritySizing 
)
static

Resolve priority to a valid AtomicQueue, fallback to DEFAULT if needed.

Parameters
handlequeue handle
priorityinput/output priority (may be modified to DEFAULT)
queueIdqueue ID for assertions
requirePrioritySizingwhether to assert on fallback
Returns
pointer to AtomicQueue or nullptr if uninitialized

Definition at line 585 of file PriorityMemQueue.cpp.

◆ updateHighWaterMark()

static void Os::Generic::updateHighWaterMark ( std::atomic< U32 > *  highWaterMarks,
FwSizeType  index,
U32  currentDepth,
FwEnumStoreType  queueId 
)
static

Update per-priority high water mark atomically.

Parameters
highWaterMarksarray of HWM atomics
indexarray index (not priority value)
currentDepthcurrent queue depth
queueIdqueue ID for assertions

Definition at line 615 of file PriorityMemQueue.cpp.

◆ validateQueueConfigs()

static void Os::Generic::validateQueueConfigs ( PriorityMemQueue::QueueConfig queueConfigs,
FwSizeType  numQueueConfigs 
)
static

Validate queue configuration structures.

Parameters
queueConfigsarray of queue configurations to validate
numQueueConfigsnumber of configurations

Definition at line 257 of file PriorityMemQueue.cpp.

Variable Documentation

◆ LOOP_GUARD_LIMIT

constexpr U32 Os::Generic::LOOP_GUARD_LIMIT = 2000

Definition at line 26 of file PriorityMemQueue.cpp.