Skip to content

Conversation

@carlescufi
Copy link
Member

Kernel events depend on multithreading being enabled, and mixing them with a non-multithreaded build gives linker failures internal to events.c. To avoid this, make events depend on multithreading.

/Users/carles/bin/zephyr-sdk-0.17.4/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: zephyr/kernel/libkernel.a(events.c.obj): in function `k_event_post_internal':
/Users/carles/src/ncs/zephyr/kernel/events.c:175: undefined reference to `z_sched_waitq_walk'
/Users/carles/bin/zephyr-sdk-0.17.4/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /Users/carles/src/ncs/zephyr/kernel/events.c:183: undefined reference to `z_sched_wake_thread'
/Users/carles/bin/zephyr-sdk-0.17.4/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /Users/carles/src/ncs/zephyr/kernel/events.c:191: undefined reference to `z_reschedule'
/Users/carles/bin/zephyr-sdk-0.17.4/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: zephyr/kernel/libkernel.a(events.c.obj): in function `k_sched_current_thread_query':
/Users/carles/src/ncs/nrf/build/flash/zephyr/include/generated/zephyr/syscalls/kernel.h:216: undefined reference to `z_impl_k_sched_current_thread_query'
/Users/carles/bin/zephyr-sdk-0.17.4/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: zephyr/kernel/libkernel.a(events.c.obj): in function `k_event_wait_internal':
/Users/carles/src/ncs/zephyr/kernel/events.c:312: undefined reference to `z_pend_curr'

@carlescufi carlescufi added this to the v4.3.0 milestone Oct 29, 2025
@carlescufi carlescufi added the Trivial Changes that can be reviewed by anyone, i.e. doc changes, minor build system tweaks, etc. label Oct 29, 2025
@zephyrbot zephyrbot added size: XS A PR changing only a single line of code area: Kernel labels Oct 29, 2025
Kernel events depend on multithreading being enabled, and mixing them
with a non-multithreaded build gives linker failures internal to
events.c. To avoid this, make events depend on multithreading.

```
libkernel.a(events.c.obj): in function `k_event_post_internal':
175: undefined reference to `z_sched_waitq_walk'
events.c:183: undefined reference to `z_sched_wake_thread'
events.c:191: undefined reference to `z_reschedule'
libkernel.a(events.c.obj): in function `k_sched_current_thread_query':
kernel.h:216: undefined reference to `z_impl_k_sched_current_thread_query'
libkernel.a(events.c.obj): in function `k_event_wait_internal':
events.c:312: undefined reference to `z_pend_curr'
```

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
@carlescufi carlescufi force-pushed the events-depend-multithreading branch from ed4a9a7 to 8118545 Compare October 29, 2025 12:30
@sonarqubecloud
Copy link

Copy link
Contributor

@peter-mitsis peter-mitsis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The failing CI test does not appear to be related to the proposed change.

@jhedberg jhedberg merged commit cd8e773 into zephyrproject-rtos:main Oct 30, 2025
42 of 44 checks passed
@jhedberg
Copy link
Member

@carlescufi I see this in the summary of the latest main CI run:

warning: EVENTS (defined at kernel/Kconfig:735) has direct dependencies MULTITHREADING with value n, but is currently being y-selected by the following symbols:

Seems likely to be related to this PR?

@jhedberg
Copy link
Member

@carlescufi I see this in the summary of the latest main CI run:

warning: EVENTS (defined at kernel/Kconfig:735) has direct dependencies MULTITHREADING with value n, but is currently being y-selected by the following symbols:

Seems likely to be related to this PR?

Looks like it's coming from this:

 897/1242 qemu_cortex_a53/qemu_cortex_a53/smp drivers.mspi.flash.mspi_nor_no_multithreading ERROR CMake build failure (qemu <zephyr>)
INFO    - /__w/zephyr/zephyr/twister-out/qemu_cortex_a53_qemu_cortex_a53_smp/zephyr/tests/drivers/mspi/flash/drivers.mspi.flash.mspi_nor_no_multithreading/build.log
ERROR   - Loading Zephyr module(s) (Zephyr base): zephyr_default:dts,kconfig

The full(er) error is this:

warning: EVENTS (defined at kernel/Kconfig:735) has direct dependencies MULTITHREADING with value n, but is currently being y-selected by the following symbols:
 - SCHED_IPI_SUPPORTED (defined at soc/espressif/esp32/Kconfig.defconfig:20, kernel/Kconfig.smp:49), with value y, direct dependencies y (value: y)

That looks pretty strange to me - why something from an espressif soc file for a qemu build?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: Kernel size: XS A PR changing only a single line of code Trivial Changes that can be reviewed by anyone, i.e. doc changes, minor build system tweaks, etc.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants