From 3552609a0847c63095ca0624b825f709fdd73e98 Mon Sep 17 00:00:00 2001 From: Cla Mattia Galliard Date: Fri, 9 Aug 2024 09:08:11 +0200 Subject: [PATCH] doc: kernel: fix k_poll example Fix `k_poll()` loop example by using separate `if` blocks instead of `if`-`else`-chain to ensure all events are handled, even if multiple are active at the same time. Signed-off-by: Cla Mattia Galliard --- doc/kernel/services/polling.rst | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/kernel/services/polling.rst b/doc/kernel/services/polling.rst index b1d08e35d0d..875b0f77abc 100644 --- a/doc/kernel/services/polling.rst +++ b/doc/kernel/services/polling.rst @@ -187,13 +187,16 @@ to :c:macro:`K_POLL_STATE_NOT_READY` by the user. rc = k_poll(events, ARRAY_SIZE(events), K_FOREVER); if (events[0].state == K_POLL_STATE_SEM_AVAILABLE) { k_sem_take(events[0].sem, 0); - } else if (events[1].state == K_POLL_STATE_FIFO_DATA_AVAILABLE) { + } + if (events[1].state == K_POLL_STATE_FIFO_DATA_AVAILABLE) { data = k_fifo_get(events[1].fifo, 0); // handle data - } else if (events[2].state == K_POLL_STATE_MSGQ_DATA_AVAILABLE) { + } + if (events[2].state == K_POLL_STATE_MSGQ_DATA_AVAILABLE) { ret = k_msgq_get(events[2].msgq, buf, K_NO_WAIT); // handle data - } else if (events[3].state == K_POLL_STATE_PIPE_DATA_AVAILABLE) { + } + if (events[3].state == K_POLL_STATE_PIPE_DATA_AVAILABLE) { ret = k_pipe_get(events[3].pipe, buf, bytes_to_read, &bytes_read, min_xfer, K_NO_WAIT); // handle data }