Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions sys/event/thread.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,16 @@ struct event_queue_and_size {
size_t q_numof;
};

static void *_handler_thread(void *tagged_ptr)
/* ARM GCC ignores that this function has no exit path, hence NORETURN. */
NORETURN static void *_handler_thread(void *tagged_ptr)
{
event_queue_t *qs = ptrtag_ptr(tagged_ptr);
/* number of queues is encoded in lower pointer bits */
size_t n = ptrtag_tag(tagged_ptr) + 1;
event_queues_claim(qs, n);
/* start event loop */
event_loop_multi(qs, n);

/* should be never reached */
return NULL;
UNREACHABLE();
}

void event_thread_init_multi(event_queue_t *queues, size_t queues_numof,
Expand Down
8 changes: 4 additions & 4 deletions sys/include/event.h
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,8 @@ event_t *event_wait_timeout_ztimer(event_queue_t *queue,
* It is pretty much defined as:
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~ {.c}
* while ((event = event_wait_multi(queues, n_queues))) {
* while (1) {
* event_t *event = event_wait_multi(queues, n_queues);
* event->handler(event);
* }
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand All @@ -434,9 +435,8 @@ event_t *event_wait_timeout_ztimer(event_queue_t *queue,
*/
static inline void event_loop_multi(event_queue_t *queues, size_t n_queues)
{
event_t *event;

while ((event = event_wait_multi(queues, n_queues))) {
while (1) {
event_t *event = event_wait_multi(queues, n_queues);
if (IS_USED(MODULE_EVENT_LOOP_DEBUG)) {
uint32_t now;
ztimer_acquire(ZTIMER_USEC);
Expand Down