picofuse

event.h
Go to the documentation of this file.
1 
48 #pragma once
49 
50 #include <stdbool.h>
51 #include <stddef.h>
52 #include <stdint.h>
53 
54 #ifdef __cplusplus
55 extern "C" {
56 #endif
57 
59 // TYPES
60 
68 typedef void *sys_event_t;
69 
76 
78 // LIFECYCLE
79 
90 sys_event_queue_t *sys_event_queue_init(size_t capacity);
91 
98 
101 // METHODS
103 
115 bool sys_event_queue_push(sys_event_queue_t *queue, sys_event_t event);
116 
124 bool sys_event_queue_try_push(sys_event_queue_t *queue, sys_event_t event);
125 
134 sys_event_t sys_event_queue_peek(sys_event_queue_t *queue);
135 
142 sys_event_t sys_event_queue_pop(sys_event_queue_t *queue);
143 
150 sys_event_t sys_event_queue_try_pop(sys_event_queue_t *queue);
151 
160  uint32_t timeout_ms);
161 
169 
177 
184 
202 
210 
213 #ifdef __cplusplus
214 }
215 #endif
void sys_event_queue_deinit(sys_event_queue_t *queue)
Deinitialize an event queue and release its resources.
size_t sys_event_queue_size(sys_event_queue_t *queue)
Return the current event count.
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_unlock(sys_event_queue_t *queue)
Unlock a queue after manual inspection.
bool sys_event_queue_push(sys_event_queue_t *queue, sys_event_t event)
Push an event, overwriting the oldest entry if the queue is full.
sys_event_t sys_event_queue_timed_pop(sys_event_queue_t *queue, uint32_t timeout_ms)
Pop the next event with a timeout.
bool sys_event_queue_lock(sys_event_queue_t *queue)
Lock a queue for manual inspection.
bool sys_event_queue_empty(sys_event_queue_t *queue)
Report whether a queue is empty.
void sys_event_queue_shutdown(sys_event_queue_t *queue)
Prevent future pushes and wake blocked consumers.
sys_event_queue_t * sys_event_queue_init(size_t capacity)
Allocate a new event queue.
struct sys_event_queue_t sys_event_queue_t
Opaque event queue.
Definition: event.h:75
void * sys_event_t
Event payload stored in a queue.
Definition: event.h:68
sys_event_t sys_event_queue_peek(sys_event_queue_t *queue)
Peek at the next queued event without removing it.
sys_event_t sys_event_queue_try_pop(sys_event_queue_t *queue)
Pop the next event without blocking.
sys_event_t sys_event_queue_pop(sys_event_queue_t *queue)
Pop the next event, blocking until one is available or shutdown.