Commit graph

1993 commits

Author SHA1 Message Date
Robin-Charles Guihéneuf
e4bd3cffd4 lib: utils: json: Fix encoded_obj element size
The size of the JSON_TOK_ENCODED_OBJ type was not defined, which
caused errors when generating an array.

Signed-off-by: Robin-Charles Guihéneuf <robin-charles@hotmail.fr>
2025-10-09 22:55:58 +03:00
Titouan Christophe
f7ccc6bae3 lib: midi2: fix const-incorrect ump_stream_responder_cfg
Passing a USB-MIDI device in a ump stream responder configuration,
as obtained from the device tree with DEVICE_DT_GET(), was wrongly
casting is from const struct device* to void*, hence removing the const
pointer attribute.

This incorrectness introduces some compilation issue. Let's therefore
make the device pointer constant in ump_stream_responder_cfg, and
add a macro to make the proper typecast consistently. Finally, adapt the
corresponding samples to use that new macro.

Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
2025-10-08 15:06:33 -04:00
Titouan Christophe
5e83d222b6 lib: midi2: new UMP Stream responder library
Add a new top-level, transport independent library to respond to UMP Stream
Discovery messages. This allows MIDI2.0 clients to discover UMP endpoints
hosted on Zephyr over the UMP protocol.

The endpoint specification can be gathered from the device tree, so that
the same information used to generate USB descriptors in usb-midi2.0
can be delivered over UMP Stream.

Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
2025-10-08 08:42:27 +02:00
Anisetti Avinash Krishna
69826c5a95 lib: acpi: Enable support for ACPI_RESOURCE_TYPE_ADDRESS64
Enable support for ACPI_RESOURCE_TYPE_ADDRESS64 in acpi_device_mmio_get
to fetch 64bit address from resource of an ACPI device.

Signed-off-by: Anisetti Avinash Krishna <anisetti.avinash.krishna@intel.com>
2025-10-07 22:59:32 -04:00
Siwei Yang
4b71cf9822 lib: smf: add API to get the current leaf and executing state
Retrieve the current leaf state by calling `smf_get_current_leaf_state`
and the state which is currently-executing by calling
`smf_get_current_executing_state`.

Signed-off-by: Siwei Yang <yswysc@gmail.com>
2025-10-07 22:58:58 -04:00
Siwei Yang
af6f88b205 lib: smf: add const qualifier to ctx arg
Add const qualifier to ctx arguments
for immutability and consistency with other functions.

Signed-off-by: Siwei Yang <yswysc@gmail.com>
2025-10-07 22:58:58 -04:00
Chris Friedt
c8e22ec596 tests: posix: signals: adjust expectations for real-time signals
1. Fix an off-by-one error in `signo_fits()` (a utility function inside
   signal.c

2. Adjust expectations for C libraries that do not provide a sigset_t
  large enough to support `SIGRTMIN` or `SIGRAMAX`.

This fixes an issue in CI that appeared when run under ARC.

```shell
west build -p auto -b qemu_arc/qemu_arc_hs -t run tests/posix/signals
```

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-10-06 20:15:10 -04:00
Johann Fischer
f289613c4c net_buf: do not assert on buffer reset when flags are set
There is only one flag, NET_BUF_EXTERNAL_DATA, used when net_buf was
allocated with external data. The flag is checked in net_buf_clone() and
net_buf_destroy(). net_buf with external buffer can be used for
receiving and transmitting. net_buf_reset() is convenient way
to reset net_buf with external data before it is re-enqueued again.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2025-10-06 20:01:51 +03:00
Vlad Kulikov
2d151b22c1 lib: smf: remove unreachable case in get_lca_of()
smf_set_state() excludes ancestor/descendant relations before calling
get_lca_of(). The function now walks from source->parent and returns
the first ancestor that contains dest. The 'ancestor == dest' case
was unreachable and is removed.

No functional change intended.

Ref: RFC #95952
Signed-off-by: Vlad Kulikov <vlad_kulikov_c@pm.me>
2025-10-01 17:12:38 -04:00
Chris Friedt
5cbb2a421d posix: switch to using posix_time.h and posix_signal.h
To avoid conflicts between the C library's `time.h` and signal.h use an
"override" header (when necessary) for C libraries that do not themselves
provide POSIX definitions in `time.h` or `signal.h`.

V2

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-10-01 14:36:55 +03:00
Chris Friedt
584b73a8d4 timeutil: make timespec_normalize() a regular function
Since the timespec_normalize() function is not branchless, and since it
can also generate a fair bit of code, make the function non-inline and
place it in timeutil.c instead.

This should save some code space on most systems.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-09-26 09:35:33 -04:00
Iuliana Prodan
a795046143 ipc: move Open AMP from lib/ to subsys/ipc/
Moved the Open AMP code from lib/ to subsys/ipc/ to better
organize IPC-related components.

Updated build and config files to reflect the new location.

Adjusted path in MAINTAINERS.yml.

Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
2025-09-26 13:22:55 +02:00
Fabio Baltieri
9384cc5b96 Revert "posix: switch to using posix_time.h and posix_signal.h"
This reverts commit 1eb5c97bd6.

Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
2025-09-25 14:15:57 -04:00
Chris Friedt
1eb5c97bd6 posix: switch to using posix_time.h and posix_signal.h
To avoid conflicts between the C library's `time.h` and signal.h use an
"override" header (when necessary) for C libraries that do not themselves
provide POSIX definitions in `time.h` or `signal.h`.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-09-25 12:01:23 +01:00
Chris Friedt
f071df29a7 posix: net: move gethostname() from static inline to normal function
Convert `gethostname()` from a static inline wrapper to a normal function
with regular linkage.

This change was prompted mainly as housekeeping for #95811, but a
secondary reason was to make this a linkable symbol so that the API works
at a binary level as well (which could be provided by the toolchain as
well).

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-09-23 09:39:24 +01:00
Aditya Chopra
58a444c6c3 libc : implement signal()
Creates implementation stub for signal() using sigaction.

Signed-off-by: Aditya Chopra <adityachopra2912@gmail.com>
2025-09-23 09:38:56 +01:00
Al Semjonovs
3fd186e71f newlib: allow limits to be defined externally
Downstream toolchains may already define these macros, add guard to
prevent macro redefined errors.

Signed-off-by: Al Semjonovs <asemjonovs@google.com>
2025-09-22 17:50:11 -04:00
Chaitanya Tata
19449e4396 wifi: treewide: Adjust defaults for dual mode usage
In case STA + AP mode is enabled, then adjust the defaults to accomodate
the second interface.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
2025-09-19 08:27:55 -04:00
Romain Pelletant
732823e0c6 posix: options: replace kconfig for rw lock
- Update Kconfig from CONFIG_POSIX_READER_WRITER_LOCKS to POSIX_RW_LOCKS

Signed-off-by: Romain Pelletant <romainp@kickmaker.net>
2025-09-19 08:27:49 -04:00
Anisetti Avinash Krishna
5bdd670e2c lib: acpi: Enable poweroff feature
Enable system poweroff feature using ACPI.

Signed-off-by: Anisetti Avinash Krishna <anisetti.avinash.krishna@intel.com>
2025-09-16 17:20:41 -04:00
Alberto Escolar Piedras
1d6da40624 lib: os: clock: Fix possibly unitialized variable warning
When building with high optimization level, the compiler thinks
duration may be used initialized and warns as much.

Let's initialize this variable always to ensure it does not happen
and with it pacify the compiler.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2025-09-13 09:37:19 +02:00
Yuval Peress
24ca0fbb76 cpp: Support C mocked __atomic_compare_exchange_*
The builtin functions __atomic_compare_exchange_* are missing when
CONFIG_ATOMIC_OPERATIONS_C is set. Add them and verify they build/work
as expected.

Signed-off-by: Yuval Peress <peress@google.com>
2025-09-11 18:10:15 +01:00
Chris Friedt
6529c847fe libc: newlib: limits.h: include posix limits from zephyr
Newlib does not seem to define a number of mandatory POSIX limits
(e.g. minimum values).

Include Zephyr's POSIX definitions in an override of Newlib's limits.h
(when the appropriate application conformance macro is provided).

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-09-10 08:27:38 +02:00
Chris Friedt
25e36f01f3 posix: limits: de-duplicate limit logic
Rather than duplicating limit logic in several places, de-duplicate it
and centralize preprocessor checks in posix_limits.h .

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-09-10 08:27:38 +02:00
Duy Vo
0c5af6f25f crc: initial support for CRC subsystem
Migrate support from crc library to new crc subsystem
Add hardware acclerator backend for crc subsystem

Signed-off-by: Duy Vo <duy.vo.xc@bp.renesas.com>
2025-09-10 08:26:32 +02:00
Chris Friedt
86eca47529 posix: system_database_r: remove invalid compilation filters
pwd.c and grp.c both had incorrect preprocessor guards around the stubs
that they were implementing. Functions were surrounded by

```cpp
ifdef CONFIG_POSIX_THREAD_SAFE_FUNCTIONS
..
endif /* CONFIG_POSIX_THREAD_SAFE_FUNCTIONS */
```

Which is not at all accurate, since that subprofiling option group is
`(CONFIG_)POSIX_SYSTEM_DATABASE_R` (which is a PR that is in-draft).

Remove the guards, since they are invalid anyway, and at most an
application will link properly. We don't really need the guards anyway,
since conditional compilation will be used to link the files into the
build.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-09-09 17:27:28 +02:00
Fabio Baltieri
fbe0c9feb9 utils: utf8: change utf8_count_chars return to int
Change utf8_count_chars return type to int and drop thesys/types.h, this
way the function does not depend on posix types.

Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
2025-09-08 11:11:40 -04:00
Fabio Baltieri
8366365c03 util: move utf8 utils to a separate header
This moves the declaration of the utf8 utils defined in lib/utils/utf8.c
in their own header. Main reason to do this is that the current setup
requried adding an include for sys/types.h in util.h, which can result
in a build falure due to a circular header depdenecy when using:

CONFIG_POSIX_API=y
CONFIG_NEWLIB_LIBC=y
_GNU_SOURCE

the loop and error are:

- include/sys/types.h:50: <- this is a NEWLIB one
- include/zephyr/posix/sys/select.h:9:
- include/zephyr/posix/posix_types.h:30:
- include/zephyr/kernel.h:17:
- include/zephyr/kernel_includes.h:25:
- include/zephyr/sys/atomic.h:18:

include/zephyr/sys/util.h:705:1:
error: unknown type name 'ssize_t'

Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
2025-09-08 11:11:40 -04:00
Krzysztof Chruściński
a6c04cf7d8 lib: utils: bitarray: Use optimized version for 32 bit array
When bitarray is limited to a single 32 bit word then bitmask_find_gap
can be used which is much faster than bit by bit search which is
used in bitarray spanning across multiple 32 bit words. Tests shows
that allocation and freeing is 2-3 times faster.

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2025-09-06 10:38:18 +02:00
Krzysztof Chruściński
53c2d58ff8 lib: utils: Add function for finding group of cleared bits in a bit mask
Add function which finds contiguous number of bits which are not set
in the 32 bit mask.

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2025-09-06 10:38:18 +02:00
Flavio Ceolin
69fb9d62f1 lib: heap: Use proper flexible array
0 length array is a GNU extension. Use proper C99 flexible
array.

Signed-off-by: Flavio Ceolin <flavio@hubblenetwork.com>
2025-09-03 13:49:31 +03:00
Daniel Hajjar
a47f304bdf lib: libc: minimal: Refactor stdbool.h for C23
Updated minimal libc to use the type "bool" which was introduced in C23
instead of defining it as a macro.

Link: https://en.cppreference.com/w/c/header/stdbool
Signed-off-by: Daniel Hajjar <daniel.hajjar16@gmail.com>
2025-09-03 01:28:42 +02:00
Chris Friedt
4ff059395b sys: timeutil: compute the remainder in timespec to timeout conversion
Since it's possible that rounding up might not always be the right thing
to do in every situation, in order to allow the application to make more
informed decisions, we created a modified timespec_to_timeout() that also
returns the remainder (or difference) between the requested time to
convert and resulting k_timeout_t. The difference is expressed as a
timespec object.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-09-02 15:53:54 +02:00
Iliar Rabet
4a4a46c26f util: adds the utf8_count_chars function
The function utf8_count_chars counts the number of UTF-encoded characters

Signed-off-by: Iliar Rabet <iliar.rabet@gmail.com>
2025-09-01 23:27:44 +02:00
Clay Wynn
40e91b4242 os: add __weak to to assert_print to allow customization
System designers may want to change the behavior of assert_print, such as
storing the message off into retained RAM and instantly rebooting. Adding
__weak allows customatization

Signed-off-by: Clay Wynn <cwynn@meta.com>
2025-08-29 22:57:52 -04:00
Chris Friedt
ab8b55ac99 posix: move posix limit definitions to posix_limits.h
Rather than keeping limits defined in a common way, controllable with one
Kconfig, move posix definitions out of the standard common libc header
`<limits.h>` into `<zephyr/posix/posix_limits.h>`, not controlled with
Kconfig. Additionally, include `<zephyr/posix/posix_limits.h>` wherever
an in-tree C library includes a custom `<limits.h>`.

Note: the only reason any of the `<limits.h>` files exist, is to define
the POSIX limit PATH_MAX without declaring `_POSIX_C_SOURCE`, which would
be necessary according to the standard, and each of the custom `<limits.h>`
files is nearly identical in this regard.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-08-29 18:21:10 +02:00
Chris Friedt
c4533d1b69 posix: move limit definitions to common libc limits.h
In order to reduce conflicts with limits defined in external C libraries,
move Zephyr's POSIX limits from posix_features.h to limits.h in the
common C library sources.

In order to give the implementation better control over where POSIX
limit definitions originate, use `#include_next <limits.h>` to pull in
the corresponding header of the C library, and provide a non-user
configurable option `CONFIG_TC_PROVIDES_POSIX_LIMIT_DEFS` that may be set
in order to ensure that the C library version of POSIX limits are used.

Note: this may mean that runtime invariant values are inconsistent with
parts that are actually in use within Zephyr, so applications are
encouraged to use `sysconf()` with external C libraries that implement
parts of the POSIX standard to query system configuration values at
runtime.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-08-29 18:21:10 +02:00
Maksymilian Goryszewski
ba30c7b4e8 lib: posix: fs: Basic fstat() using seek and tell
Implement limited posix fstat()

Signed-off-by: Maksymilian Goryszewski <mgoryszewski@internships.antmicro.com>
2025-08-27 08:27:14 +02:00
Mohamed Moawad
ed9fa3aa83 lib: libc: default LIBC_ALLOW_LESS_THAN_64BIT_TIME for ARCMWDT
Set CONFIG_LIBC_ALLOW_LESS_THAN_64BIT_TIME to default 'y' for
ARCMWDT_LIBC toolchain.
The ARCMWDT_LIBC uses a 32-bit time_t
which fails the 64-bit time_t validation introduced to prevent Y2038
issues. This change eliminates the need to manually configure this
option for every ARCMWDT test while maintaining the validation
for other toolchains that support 64-bit time_t.

Signed-off-by: Mohamed Moawad <moawad@synopsys.com>
2025-08-20 16:31:26 +02:00
Jamie McCrae
db8f991c77 kconfig: Use $(...) instead of ${...} for getting variables
Updates this to comply with the Zephyr Kconfig recommendations

Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
2025-08-20 12:05:41 +02:00
Ilya Tagunov
c8c894b83e lib: libc: arcmwdt: add a declaration for the strnlen function
ARC MWDT C library does not have an implementation of the strnlen
function, so we have a wrapper over standard-compliant strnlen_s.
However, there is no declaration of the wrapper, so add one.

Signed-off-by: Ilya Tagunov <Ilya.Tagunov@synopsys.com>
2025-08-13 11:09:01 +01:00
Jordan Yates
9d0d3ef076 net_buf: buf: return on double free
If assertions are disabled, return on double free instead of wrapping
around the reference count.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-08-12 20:39:06 -04:00
Jordan Yates
5184e3f86a net_buf: buf: assert on double free
Unreferencing a buffer that has already been freed should trigger an
assertion as it indicates a critical logic error and potential security
concern.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-08-12 20:39:06 -04:00
Jordan Yates
97b9a0c1c5 net_buf: buf: remove custom assertion logic
There is no need for a custom assert macro that is only used once, or
conditional compilation of the assert macro based on `__ASSERT_ON`. If
assertions are disabled the compiler should simply discard the code.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-08-12 20:39:06 -04:00
Keith Packard
4c2ac61a82 lib/libc: Provide optional check for time_t size
The LIBC_ALLOW_LESS_THAN_64BIT_TIME option disables a compile-time check
ensuring that time_t can hold 64-bit values. This check can prevent
accidental builds on targets with 32-bit time_t and the consequent 2038
issues.

This option is enabled when using the native C library as i386 glibc
uses 32-bit time_t.

A new file, validate_libc.c, is added to lib/libc to contain this and any
future libc tests. The check for CONFIG_EXTERNAL_LIBC is moved to
libc/CMakeLists.txt to ensure that this new file is always compiled.

Signed-off-by: Keith Packard <keithp@keithp.com>
2025-08-06 17:10:15 +03:00
Chris Friedt
82460c8a1d posix: signals: use Kconfig options instead of _NSIG
Use CONFIG_POSIX_RTSIG_MAX instead of _NSIG, since RTSIG_MAX isn't always
going to be defined.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-08-06 12:13:53 +03:00
Chris Friedt
a6f2bb0c4c posix: do not rely on PAGE_SIZE being defined in limits.h
Since an implementation may omit definitions of runtime invariant values
in limits.h if the corresponding value is equal to or greater than the
minimum, is unspecified, and must be queried at runtime [1], do not rely
on PAGE_SIZE being declared in limits.h .

[1]
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/limits.h.html

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-08-06 12:13:42 +03:00
Adrian Bieri
5d42408efa cpp: add kconfig option STD_CPP23 for STD_CPP
to be able to choose c++23 dialect
deprecates c++2b, but we should keep the option c++2b for legacy

Signed-off-by: Adrian Bieri <adrian.bieri@loepfe.com>
2025-07-30 07:27:53 -04:00
Chris Friedt
05305e2647 lib: libc: common: time: do not set errno in time()
The ISO C function time() is not specified to set the global
errno variable, so remove that in case there are side-effects.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-07-23 09:34:36 +02:00
Sanjay Vallimanalan
ce4eba52d5 lib: utils: json: add support for mixed array types
Added support for mixed array types in JSON by introducing a new type -
json_mixed_arr_descr. Added APIs for mixed array type parsing and
encoding.

Signed-off-by: Sanjay Vallimanalan <sanjay@linumiz.com>
2025-07-21 21:31:21 -04:00