gettimeofday() was already implemented, but incorrectly lumped into
POSIX_TIMERS.
putenv() is really just a wrapper around setenv().
The only one left to implement was gethostid() which was relatively
trivial.
Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
Zero-initialize the `test_int_limits` and `test_enums` structs before
assignment and decoding in their respective tests.
This ensures that all padding bytes are set to zero, making
`memcmp`-based comparisons reliable and portable across different
architectures and compilers.
Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
Use CLOCK_REALTIME for the default clock source throughout
the POSIX implementation and tests so that we are
consistent with the specification.
Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
Support parsing and serializing of struct fields that are defined as a
char array.
Use the token JSON_TOK_STRING_BUF to parse and serialize a string for a
char array, for example:
struct foo {
const char *str;
char str_buf[30];
};
struct json_obj_descr foo_descr[] = {
JSON_OBJ_DESCR_PRIM(struct foo, str, JSON_TOK_STRING),
JSON_OBJ_DESCR_PRIM(struct foo, str_buf, JSON_TOK_STRING_BUF),
};
The struct 'json_obj_descr' now has an additional union member 'field'
to store the size of the struct field, which is used with the token
'JSON_TOK_STRING_BUF' to determine the element size.
Fixes: #65200
Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com>
Update the JSON test cases to explicitly cast NAN and INFINITY to double
type to avoid implicit promotion.
Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
Up to now, the handling of type float was offloaded to the users of the
JSON utility, with the token JSON_TOK_FLOAT.
Improve handling of floating point types and support the types 'float'
and 'double' in a built-in way so that they can be directly parsed to
and serialized from variables (of type float or double).
The types are serialized in the shortest representation, either as a
decimal number or in scientific notation:
* float (with JSON_TOK_FLOAT_FP): encoded with maximal 9 digits
* double (with JSON_TOK_DOUBLE_FP): encoded with maximal 16 digits
* NaN, Infinity, -Infinity: encoded and decoded as:
{"nan_val":NaN,"inf_pos":Infinity,"inf_neg":-Infinity}
Enable the floating point functionality with the Kconfig option:
JSON_LIBRARY_FP_SUPPORT=y
It requires a libc implementation with support for floating point
functions: strtof(), strtod(), isnan() and isinf().
Fixes: #59412
Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com>
The calculation of the object size may be incorrect when the size of
a field is smaller than the struct alignment. When such a struct is
used in an array field, the decoded object contains wrong values.
The alignment influences the object size. For example the following
struct has a calculated object size of 8 bytes, however due to
alignment the real size of the struct is 12 bytes:
struct test_bool {
bool b1; /* offset 0, size 1 */
/* 3-byte padding */
int i1; /* offset 4, size 4 */
bool b2; /* offset 8, size 1 */
/* 3-byte padding */
};
This commit changes the object size calculation and computes the size
with the offset and size of the last field in the struct (rounded up
by the struct alignment).
Fixes: #85121
Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com>
Few tests are being skipped for no goot reason (anymore). Add some
coverage using few platforms that work with intention to expand if all
works well and if needed.
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Building libraries.cmsis_dsp.distance with clang warns:
tests/lib/cmsis_dsp/distance/src/f32.c:99:3: error: variable 'val' is
used uninitialized whenever switch default is taken
[-Werror,-Wsometimes-uninitialized]
default:
^~~~~~~
tests/lib/cmsis_dsp/distance/src/f32.c:104:19: note: uninitialized use
occurs here
output[index] = val;
^~~
tests/lib/cmsis_dsp/distance/src/f32.c:57:16: note: initialize the
variable 'val' to silence this warning
float32_t val;
^
= 0.0
Not really necessary since there is a zassert_unreachable, but doesn't
hurt to initialize the variable.
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
The TOOLCHAIN_DISABLE_WARNING/TOOLCHAIN_ENABLE_WARNING macros are easier
to read and compiler agnostic.
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Building with clang warns:
tests/lib/cmsis_dsp/distance/src/u32.c:82:3: error: variable 'val' is
used uninitialized whenever switch default is taken
[-Werror,-Wsometimes-uninitialized]
default:
^~~~~~~
tests/lib/cmsis_dsp/distance/src/u32.c:87:19: note: uninitialized use
occurs here
output[index] = val;
^~~
tests/lib/cmsis_dsp/distance/src/u32.c:47:16: note: initialize the
variable 'val' to silence this warning
float32_t val;
^
= 0.0
Hitting the default switch will assert, so this won't cause any problems
as written, but it doesn't hurt to initialize the variable.
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
- Make sure the align-and-rewind feature is explicitly tested.
- Add sub-unit allocations to the mix.
- Rely on some heap internal facilities to determine heap boundaries
(32- vs 64-bit builds do cause a difference).
Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
Improve naming of the scheduler and call it what it is: simple. Using
'dumb' for the default scheduler algorithm in Zephyr is a bad idea.
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Some platforms, notably ARM64, need more than 512 bytes of breathing
room on the stack. Very weird and difficult-to-track memory corruptions
were caused by test_mheap_realloc without this.
Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
Make struct ring_buf 12 bytes smaller by default. This comes with a 32KB
buffer size limit which covers almost all cases. The previous limit of
2GB can be restored with CONFIG_RING_BUFFER_LARGE=y.
Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
Instead of passing a single init function, create
struct device_ops with the init function inside. This allows to easily
extend device's capabilities in the future without too much breakage,
e.g. to add a de-init call.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
Such union is rather redundant, considering a simple const cast can be
done when initializing the init entry. Note that the init_entry does not
need to be touched now that struct device stores the init call. It is
merely an init entry sorted by linker scripts, so we can intertwine
devices and SYS_INIT.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
It just complicates things. It is not C99 strandard, and since C11 is
not mandatory, it is better to play safe here.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
Fixes test failures on up_squared caused by ACPI adding to
heap size (K_HEAP_MEM_POOL_SIZE). The test assumed the heap size
always matched the Kconfig CONFIG_HEAP_MEM_POOL_SIZE=256.
Signed-off-by: Lauren Murphy <lauren.murphy@intel.com>
native_posix is being removed as it has reached its end of life in 4.2,
after being deprecated since 4.0.
Remove the twister support for native_posix[//64] and therefore all
references to them from the testcases and samples yamls, so twister
does not error out.
Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
DT_SPEC related macro tests (ADC_DT_SPEC_GET_BY_NAME, MBOX_DT_SPEC_GET)
should not appear in this test because the configuration does not turn
on any devices
Move DP_SPEC-related tests to api_ext and enable the related device in the
configuration
fix#77205
Signed-off-by: Wenbin Zhang <freey7955@gmail.com>
Add a new "hash" attribute to all Devicetree EDT nodes. The hash is
calculated on the full path of the node; this means that its value
remains stable across rebuilds.
The hash is checked for uniqueness among nodes in the same EDT.
This computed token is then added to `devicetree_generated.h` and made
accessible to Zephyr code via a new DT_NODE_HASH(node_id) macro.
Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
When building with clang and -Wno-gnu it complains about the missing
equals:
tests/lib/smf/src/test_lib_hierarchical_5_ancestor_smf.c:415:8: error:
use of GNU 'missing =' extension in designator
[-Werror,-Wgnu-designator]
[P05] SMF_CREATE_STATE(p05_entry, p05_run, p05_exit, NULL, NULL),
^
=
tests/lib/smf/src/test_lib_hierarchical_5_ancestor_smf.c:416:8: error:
use of GNU 'missing =' extension in designator
[-Werror,-Wgnu-designator]
[P04] SMF_CREATE_STATE(p04_entry, p04_run, p04_exit, &test_states[P05],
^ NULL),
=
tests/lib/smf/src/test_lib_hierarchical_5_ancestor_smf.c:417:8: error:
use of GNU 'missing =' extension in designator
[-Werror,-Wgnu-designator]
[P03] SMF_CREATE_STATE(p03_entry, p03_run, p03_exit, &test_states[P04],
^ NULL),
=
tests/lib/smf/src/test_lib_hierarchical_5_ancestor_smf.c:418:8: error:
use of GNU 'missing =' extension in designator
[-Werror,-Wgnu-designator]
[P02] SMF_CREATE_STATE(p02_entry, p02_run, p02_exit, &test_states[P03],
^ NULL),
=
tests/lib/smf/src/test_lib_hierarchical_5_ancestor_smf.c:419:8: error:
use of GNU 'missing =' extension in designator
[-Werror,-Wgnu-designator]
[P01] SMF_CREATE_STATE(p01_entry, p01_run, p01_exit, &test_states[P02],
^ NULL),
=
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
This test cannot tolerate any loss of precision, including the one
caused by the compiler contracting floating points operations together,
like in fused multiply-add (FMA). Some toolchains enable FP contraction
by default, so disable it for the specific test and let the user decide
themselves whether precision or performance is needed for their
specific application.
Co-authored-by: Jordan Yates <jordan@embeint.com>
Co-authored-by: Ilya Tagunov <Ilya.Tagunov@synopsys.com>
Signed-off-by: Ilya Tagunov <Ilya.Tagunov@synopsys.com>
Instead of extending list of unsupported platforms use filter that
will exclude or current and next ARM cores from platforms with HAL
that does not support C++98.
Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
Check if the spinlock is held before attempting to wait by
taking the semaphore, as that would cause a context switch which
isn't allowed and will trigger an assertion error when
`CONFIG_SPIN_VALIDATE` is enabled.
Logging in spinlock-held context when the log buffer is full can lead
to an infinite assertion error loop, as the logging subsys attempts to
allocate buffer when there's none available, it will try to wait for
one and thus triggers the assertion error, the error message will be
printed through the logging sybsys but there's no buffer available,
so it will try to wait for one and triggers another assertion error..
This loop just goes on and on forever, and nothing gets printed to
the terminal.
Added a test to validate the fix.
Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
Signed-off-by: Maxim Adelman <imax@meta.com>
With the update to v9.2.0 several Kconfig symbols were renamed or removed.
Adjust the test accordingly. Also several constants were renamed, rename
those also.
Signed-off-by: Fabian Blatz <fabianblatz@gmail.com>