174 uint32_t timeout_ms);
bool sys_event_queue_push(sys_event_queue_t *queue, sys_event_t event)
Push an event to the queue (always succeeds)
Event queue structure for producer/consumer patterns.
sys_event_t sys_event_queue_try_pop(sys_event_queue_t *queue)
Try to remove and return the next event (non-blocking)
sys_event_t sys_event_queue_pop(sys_event_queue_t *queue)
Remove and return the next event (blocking)
size_t sys_event_queue_size(sys_event_queue_t *queue)
Get the current number of events in the queue.
void * sys_event_t
Event type for queue items.
sys_mutex_t mutex
Protects all queue state.
sys_event_t * items
Array of event items.
static bool sys_event_queue_valid(sys_event_queue_t *queue)
Check if the queue is valid and usable for operations.
sys_cond_t not_empty
Signals consumers when items available.
size_t capacity
Maximum queue size.
sys_event_queue_t sys_event_queue_init(size_t capacity)
Initialize a new event queue.
size_t tail
Read position (consumer index)
size_t head
Write position (producer index)
Condition variable context structure.
void sys_event_queue_finalize(sys_event_queue_t *queue)
Finalize and cleanup an event queue.
bool shutdown
Flag for graceful shutdown.
size_t count
Current number of items.
void sys_event_queue_shutdown(sys_event_queue_t *queue)
Shut down the queue gracefully.
bool sys_event_queue_lock(sys_event_queue_t *queue)
Lock the queue for manual synchronization.
sys_event_t sys_event_queue_timed_pop(sys_event_queue_t *queue, uint32_t timeout_ms)
Remove and return the next event with timeout.
bool sys_event_queue_unlock(sys_event_queue_t *queue)
Unlock the queue after manual synchronization.
Synchronization primitives for thread-safe operations.
sys_event_t sys_event_queue_peek(sys_event_queue_t *queue)
Peek at the next event without removing it.
bool sys_event_queue_try_push(sys_event_queue_t *queue, sys_event_t event)
Try to push an event without overwriting.
bool sys_event_queue_empty(sys_event_queue_t *queue)
Check if the queue is empty.