115 #ifndef THREAD_FLAG_EVENT 
  119 #define THREAD_FLAG_EVENT   (0x1) 
  125 #define EVENT_QUEUE_INIT    { .waiter = thread_get_active() } 
  130 #define EVENT_QUEUE_INIT_DETACHED   { .waiter = NULL } 
  169     assert(queues && n_queues);
 
  171     for (
size_t i = 0; i < n_queues; i++) {
 
  172         memset(&queues[i], 
'\0', 
sizeof(queues[0]));
 
  199     for (
size_t i = 0; i < n_queues; i++) {
 
  200         memset(&queues[i], 
'\0', 
sizeof(queues[0]));
 
  229     for (
size_t i = 0; i < n_queues; i++) {
 
  230         assert(queues[i].waiter == NULL);
 
  356 #if IS_USED(MODULE_XTIMER) || defined(DOXYGEN) 
  386 #if IS_USED(MODULE_ZTIMER) || defined(DOXYGEN) 
  440         if (
IS_USED(MODULE_EVENT_LOOP_DEBUG)) {
 
  445             if (!
IS_USED(MODULE_EVENT_CALLBACK) ||
 
  447                 printf(
"event: executing %p->%p\n",
 
  452             event->handler(
event);
 
  454             printf(
"event: %p took %" PRIu32 
" µs\n",
 
  459             event->handler(
event);
 
POSIX.1-2008 compliant version of the assert macro.
 
#define assert(cond)
abort the program if assertion is false
 
void _event_callback_handler(event_t *event)
event callback handler function (used internally)
 
static thread_t * thread_get_active(void)
Returns a pointer to the Thread Control Block of the currently running thread.
 
#define printf(...)
A wrapper for the printf() function that passes arguments through unmodified, but fails to compile if...
 
static event_t * event_wait(event_queue_t *queue)
Get next event from event queue, blocking.
 
static void event_loop_multi(event_queue_t *queues, size_t n_queues)
Simple event loop with multiple queues.
 
void event_post(event_queue_t *queue, event_t *event)
Queue an event.
 
event_t * event_wait_timeout64(event_queue_t *queue, uint64_t timeout)
Get next event from event queue, blocking until timeout expires.
 
static void event_loop(event_queue_t *queue)
Simple event loop.
 
static void event_queue_init(event_queue_t *queue)
Initialize an event queue.
 
void(* event_handler_t)(event_t *)
event handler type definition
 
void event_cancel(event_queue_t *queue, event_t *event)
Cancel a queued event.
 
event_t * event_wait_timeout_ztimer(event_queue_t *queue, ztimer_clock_t *clock, uint32_t timeout)
Get next event from event queue, blocking until timeout expires.
 
struct PTRTAG event_queue_t
event queue structure
 
static void event_queue_init_detached(event_queue_t *queue)
Initialize an event queue not binding it to a thread.
 
static void event_queue_claim(event_queue_t *queue)
Bind an event queue to the calling thread.
 
static void event_queues_claim(event_queue_t *queues, size_t n_queues)
Bind an array of event queues to the calling thread.
 
void event_sync(event_queue_t *queue)
Synchronize with the last event on the queue.
 
static void event_queues_init_detached(event_queue_t *queues, size_t n_queues)
Initialize an array of event queues not binding it to a thread.
 
static void event_queues_init(event_queue_t *queues, size_t n_queues)
Initialize an array of event queues.
 
bool event_is_queued(const event_queue_t *queue, const event_t *event)
Check if an event is already queued.
 
event_t * event_get(event_queue_t *queue)
Get next event from event queue, non-blocking.
 
event_t * event_wait_multi(event_queue_t *queues, size_t n_queues)
Get next event from the given event queues, blocking.
 
event_t * event_wait_timeout(event_queue_t *queue, uint32_t timeout)
Get next event from event queue, blocking until timeout expires.
 
bool ztimer_release(ztimer_clock_t *clock)
Release a clock.
 
ztimer_clock_t *const ZTIMER_USEC
Default ztimer microsecond clock.
 
bool ztimer_acquire(ztimer_clock_t *clock)
Acquire a clock.
 
static ztimer_now_t ztimer_now(ztimer_clock_t *clock)
Get the current time from a clock.
 
#define IS_USED(module)
Checks whether a module is being used or not.
 
time_point now()
Returns the current time saved in a time point.
 
thread_t * waiter
thread owning event queue
 
clist_node_t event_list
list of queued events
 
thread_t holds thread's context data.
 
event_handler_t handler
pointer to event handler function
 
clist_node_t list_node
event queue list entry