zephyr/lib/os
Keith Packard 7a5fcb8c60 libc/picolibc: Support 'long long' and 'minimal' printf variants
Picolibc's 'minimal' printf mode reduces functionality and size even more
than the 'integer' mode. Use this where memory is at a premium and where
the application knows that it does not require exact printf semantics.

1.8.5 adds two more printf variants, 'long long' and 'minimal'. The 'long
long' variant is the same as the 'integer' variant but with long long
support enabled. The 'minimal' variant reduces functionality and size even
more than the 'integer' mode. Applications can use this where memory is at
a premium and where the application does not require exact printf
semantics.

With these two added variants, the SDK has enough options so that all of
the cbprintf modes can be supported with the pre-compiled bits:

 1. CBPRINTF_NANO - picolibc's 'minimal' variant
 2. CBPRINTF_REDUCED_INTEGRAL - picolibc's 'integer' variant
 3. CBPRINTF_FULL_INTEGRAL - picolibc's 'long long' variant
 4. CBPRINTF_FB_SUPPORT - picolibc's 'double' variant

This patch makes the cbprintf Kconfig values drive the default picolibc
variant, disables picolibc variants not capable of supporting the required
cbprintf level, but allows applications to select more functionality in
picolibc than cbprintf requires.

Note that this depends on the SDK including picolibc 1.8.5. Without that,
selecting the 'minimal' or 'long long' variant in Zephyr will end up with
the default variant from picolibc, which is the full version with floating
point support. When using the module things will work as specified.

Signed-off-by: Keith Packard <keithp@keithp.com>
2023-11-20 06:07:58 -05:00
..
assert.c
base64.c
bitarray.c
cbprintf_complete.c
cbprintf_nano.c
cbprintf_packaged.c lib: os: cbprintf: Add option to enable pointer checking 2023-10-31 09:01:38 +01:00
cbprintf.c
CMakeLists.txt lib: os: build fdtable conditionally 2023-09-28 06:25:16 -04:00
dec.c lib: os: dec: add misra-c2012 compliance changes 2023-07-28 11:15:44 +02:00
fdtable.c syscall: rename z_object_recycle -> k_object_recycle 2023-11-03 11:46:52 +01:00
heap_listener.c
heap-validate.c
heap.c
heap.h
hex.c lib: os: hex: clarify controlling expression 2023-08-23 16:06:05 +01:00
json.c json: Skip unknown fields on parsing 2023-07-18 11:03:21 +00:00
Kconfig kconfig: Remove MP_NUM_CPUS usage 2023-10-03 17:45:53 +01:00
Kconfig.cbprintf libc/picolibc: Support 'long long' and 'minimal' printf variants 2023-11-20 06:07:58 -05:00
Kconfig.heap kernel: Integrate object core statistics 2023-09-30 08:04:14 +03:00
mem_blocks.c kernel: Integrate object core statistics 2023-09-30 08:04:14 +03:00
mpsc_pbuf.c
multi_heap.c
mutex.c syscall: rename Z_SYSCALL_ to K_SYSCALL_ 2023-11-03 11:46:52 +01:00
notify.c
onoff.c
p4wq.c kernel: move wait_q.h header to be internal 2023-09-12 12:55:36 -04:00
poweroff.c lib: os: add support for system power off 2023-08-04 16:59:36 +02:00
printk.c syscall: rename Z_OOPS -> K_OOPS 2023-11-03 11:46:52 +01:00
rb.c
reboot.c
ring_buffer.c
sem.c kernel: move syscall_handler.h to internal include directory 2023-11-03 11:46:52 +01:00
shared_multi_heap.c shared_multi_heap: Use a data struct 2023-07-26 07:56:39 -04:00
spsc_pbuf.c
thread_entry.c random: Rename random header 2023-10-10 14:23:50 +03:00
timeutil.c sys/time_units.h: Convert time conversion to macros 2023-09-28 16:15:27 +02:00
user_work.c
utf8.c
winstream.c