Minimal libc
最基本的C库,被称为“最小libc”,是Zephyr代码库的一部分,并提供了标准C库的最小子集,以满足Zephyr及其子系统的需求,主要是在字符串操作和显示领域。
它的占用空间非常低,适用于不依赖于ISOC标准库中较少使用的部分的项目。它还可以与许多不同的工具链一起使用。
最小的libc实现可以在主Ziphyr树中的 lib/libc/minimal实现中找到。
动态内存管理
通过选择应用程序配置文件中选择CONFIG_MINIMAL_LIBC_MALLOC,可以启用最小libc中的动态内存管理。
最小的libc在内部使用内核内存堆API来管理标准的动态内存管理接口函数所使用的内存堆,如malloc()和free()。
内部内存堆通常位于.bss部分中。然而,当启用用户空间时,它将被放置在一个名为z_malloc_partition的专用内存分区中,可以从用户模式线程访问该分区。内部内存堆的大小由CONFIG_MINIMAL_LIBC_MALLOC_ARENA_SIZE指定。
由最小libc实现的标准动态内存管理接口函数是线程安全的,可以被多个线程同时调用。这些函数是在 lib/libc/minimal/source/stdlib/malloc.c
.中实现的。