This is an automated email from the ASF dual-hosted git repository. kasjer pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 704a2e6c268a882a38ea73d5d77ba06b2388e15f Author: Jerzy Kasenberg <[email protected]> AuthorDate: Thu Oct 22 11:30:49 2026 +0200 kernel/os: Add os_eventq_loop() Almost every user of os_eventq_run() wraps it in the same endless loop. Add os_eventq_loop() that does exactly that and never returns, and os_eventq_task_handler() that runs it on the event queue passed as task argument, so it can be given directly to os_task_init(). Use os_eventq_loop() in os_main() for selftest builds and in testutil default task handler. Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Jerzy Kasenberg <[email protected]> --- kernel/os/include/os/os_eventq.h | 16 ++++++++++++++++ kernel/os/src/os.c | 4 +--- kernel/os/src/os_eventq.c | 14 ++++++++++++++ test/testutil/src/testutil.c | 4 +--- 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/kernel/os/include/os/os_eventq.h b/kernel/os/include/os/os_eventq.h index ad9d74619..046410700 100644 --- a/kernel/os/include/os/os_eventq.h +++ b/kernel/os/include/os/os_eventq.h @@ -158,6 +158,22 @@ struct os_event *os_eventq_get(struct os_eventq *evq); */ void os_eventq_run(struct os_eventq *evq); +/** + * Process events from the event queue forever. Equivalent to calling + * os_eventq_run() in an endless loop. Never returns. + * + * @param evq The event queue to process. + */ +void os_eventq_loop(struct os_eventq *evq) __attribute__((noreturn)); + +/** + * Task handler that processes events from the event queue passed as task + * argument forever. Can be passed directly to os_task_init(). + * + * @param arg The event queue to process + * (struct os_eventq *). + */ +void os_eventq_task_handler(void *arg) __attribute__((noreturn)); /** * Poll the list of event queues specified by the evq parameter diff --git a/kernel/os/src/os.c b/kernel/os/src/os.c index e926337b5..d71814b04 100644 --- a/kernel/os/src/os.c +++ b/kernel/os/src/os.c @@ -182,9 +182,7 @@ os_main(void *arg) fn(0, NULL); #else (void)fn; - while (1) { - os_eventq_run(os_eventq_dflt_get()); - } + os_eventq_loop(os_eventq_dflt_get()); #endif assert(0); } diff --git a/kernel/os/src/os_eventq.c b/kernel/os/src/os_eventq.c index c070ab08c..11219eb42 100644 --- a/kernel/os/src/os_eventq.c +++ b/kernel/os/src/os_eventq.c @@ -215,6 +215,20 @@ os_eventq_run(struct os_eventq *evq) #endif } +void +os_eventq_loop(struct os_eventq *evq) +{ + while (1) { + os_eventq_run(evq); + } +} + +void +os_eventq_task_handler(void *arg) +{ + os_eventq_loop(arg); +} + static struct os_event * os_eventq_poll_0timo(struct os_eventq **evq, int nevqs) { diff --git a/test/testutil/src/testutil.c b/test/testutil/src/testutil.c index d59e9d07c..3f150185c 100644 --- a/test/testutil/src/testutil.c +++ b/test/testutil/src/testutil.c @@ -104,9 +104,7 @@ tu_restart(void) static void tu_dflt_task_handler(void *arg) { - while (1) { - os_eventq_run(os_eventq_dflt_get()); - } + os_eventq_loop(os_eventq_dflt_get()); } static void
