Add bounds check to prevent accessing heaps array with index=-1
when the address parameter is NULL or too small.
Return NULL in such cases to match the API specification.
Signed-off-by: Nulliu Z <zophaisina@outlook.com>
Replace all in-function instances of MIN/MAX/CLAMP with the single
evaluation version min/max/clamp.
There's probably no race conditions in these files, but the single
evaluation ones save a couple of instructions each so they should save
few code bytes and potentially perform better, so they should be
preferred in general.
Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
Legacy crypto support is going to be removed in the next Mbed TLS release
(which will be named TF-PSA-Crypto for the crypto support) so this
commit transitions UUID library from legacy crypto to PSA API.
Signed-off-by: Valerio Setti <vsetti@baylibre.com>
Move cpu_load to lib/os, as this functionality on its own does not
justify being a subsystem on its own.
Fixes#95498
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Make sure we always allocate space for stdin, stdout and stderr file
descriptors if Posix device io option is enabled.
Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
Instead of user trying to figure out what is the amount of file /
socket descriptors in the system, let the various subsystems etc.
specify their need using a Kconfig option. The build system will
then add these smaller values together and set a suitable file
descriptor count in the system.
This works the same way as the heap size calculation introduced
in commit 3fbf12487c
Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
CONFIG_XOPEN_STREAMS does not follow the pattern of other XSI Option
Groups, where the Option Group name is not the same as the feature
test macro that indicates it is supported by the implementation.
Deprecate CONFIG_XOPEN_STREAMS and rename it to CONFIG_XSI_STREAMS.
For more information, please see
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/\
V1_chap02.html#tag_02_01_05_09
Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
Indicate that C library headers have declared `struct sigevent` and
`struct sigval` to avoid redefinition warnings / errors.
Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
The `sched_yield()` function was originally included to facilitate the of
POSIX_REALTIME and POSIX_THREADS_EXT Option Groups in Issue 5.
It was then marked as part of the _POSIX_PROCESS_SCHEDULING Option in
Issue 6, but then was not clearly marked as part of the
POSIX_THREADS(_BASE) Option Group until Issue 7.
Moving it to `pthread.c` (and making it a function with regular
linkage rather than inline) ensures that it will be available with the
`POSIX_THREADS` Option Group.
For more information, please see `POSIX_THREADS_BASE` in
https://pubs.opengroup.org/onlinepubs/9699919799/xrat/\
V4_subprofiles.html and
https://pubs.opengroup.org/onlinepubs/9799919799/xrat/\
V4_subprofiles.html
Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
The `sys/types.h` header is part of POSIX, which is optional in Zephyr and
is mostly unimplemented by Zephyr's minimal C library.
Additionally, the only reason `sys/types.h` is included in `string.c` (in
the minimal libc) is because of the non-standard `mem_word_t` type.
`mem_word_t` is not used anywhere else in-tree or in modules hosted by the
Zephyr project. It is only used in `string.c` in the minimal c library.
It's definitely not specified here
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html
and so does not really belong in `sys/types.h`.
Move `mem_word_t` into the minimal libc's `string.c`. If needed, it can be
removed at a later date and switched for `uintptr_t`.
Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
Add a custom Zephyr POSIX subprofile specifically for enabling the
default features that Zephyr requires as per the coding guidelines.
Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
The getopt sources were not formatted according to our codying style
conventions, so apply formatting rules as a separate commit.
Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
Separate the POSIX implementation into two categories:
- Extensions to ISO C
- System Interfaces
The first category include standalone functions that generally do not
require OS support or depend on any other features within the POSIX
specification. The Option Groups that comprise this category include
- POSIX_C_LIB_EXT: e.g. strnlen(), fnmatch()
- POSIX_C_LANG_SUPPORT_R: e.g. gmtime_r(), strtok_r()
The second category includes the majority of other POSIX Option Groups
that do require OS support. The latter group may also be categorized
generally as being NATIVE_LIBC_INCOMPATIBLE, although that might
eventually become more granular.
Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
The eventfd configuration does not need to be so deeply nested within
POSIX since it does not depend on POSIX completely.
Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
Add support for the `times()` function, which can be used to get the
number of ticks spent in "system" and "user" mode, and which returns
the "real time" that has expired, since an arbitrary point in the past.
The following invariant should always hold:
rtime <= stime + utime
The `times()` function measures time for the calling process and all
of it's child processes. In Zephyr, we don't support separate processes
(yet), so the time spent in child processes is zero.
Additionally, in Zephyr we do not differentiate between "system" time
(i.e. time spent executing kernel code) and "user" time (time spent
executing application code). We only have information on "total time"
(time spent executing code) and "execution time" (time spent executing
code plus idle time).
For now, only report utime, since it is not clear how to obtain other
values.
Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
Replace get_last_of(init_state) with get_child_of(init_state, NULL),
and add a brief comment to avoid relying on a trivial wrapper. Also,
the wrapper name get_last_of() is not very descriptive; using
get_child_of() with an comment makes the intent more explicit.
Signed-off-by: Vladislav Kulikov <vlad_kulikov_c@pm.me>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Downstream toolchains may already define these macros, add guard to
prevent macro redefined errors.
Signed-off-by: Al Semjonovs <asemjonovs@google.com>
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>
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>
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>
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>
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>
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>