Skip to content

Commit 65dcaf7

Browse files
committed
sys/event/thread: optimize stack usage
1 parent 8590133 commit 65dcaf7

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

sys/event/thread.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,16 @@ struct event_queue_and_size {
3131
size_t q_numof;
3232
};
3333

34-
static void *_handler_thread(void *tagged_ptr)
34+
/* ARM GCC ignores that this function has no exit path, hence NORETURN. */
35+
NORETURN static void *_handler_thread(void *tagged_ptr)
3536
{
3637
event_queue_t *qs = ptrtag_ptr(tagged_ptr);
3738
/* number of queues is encoded in lower pointer bits */
3839
size_t n = ptrtag_tag(tagged_ptr) + 1;
3940
event_queues_claim(qs, n);
4041
/* start event loop */
4142
event_loop_multi(qs, n);
42-
43-
/* should be never reached */
44-
return NULL;
43+
UNREACHABLE();
4544
}
4645

4746
void event_thread_init_multi(event_queue_t *queues, size_t queues_numof,

sys/include/event.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,8 @@ event_t *event_wait_timeout_ztimer(event_queue_t *queue,
416416
* It is pretty much defined as:
417417
*
418418
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~ {.c}
419-
* while ((event = event_wait_multi(queues, n_queues))) {
419+
* while (1) {
420+
* event_t *event = event_wait_multi(queues, n_queues);
420421
* event->handler(event);
421422
* }
422423
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -434,9 +435,8 @@ event_t *event_wait_timeout_ztimer(event_queue_t *queue,
434435
*/
435436
static inline void event_loop_multi(event_queue_t *queues, size_t n_queues)
436437
{
437-
event_t *event;
438-
439-
while ((event = event_wait_multi(queues, n_queues))) {
438+
while (1) {
439+
event_t *event = event_wait_multi(queues, n_queues);
440440
if (IS_USED(MODULE_EVENT_LOOP_DEBUG)) {
441441
uint32_t now;
442442
ztimer_acquire(ZTIMER_USEC);

0 commit comments

Comments
 (0)