StaticArena
上游未提供说明。
utils/static_arena.hpp:140.1.0+855c407f828e11 / 18 个公开 API 符号没有说明。
上游未提供说明。
utils/static_arena.hpp:14
StaticArena< Size >::StaticArena ()=default
上游未提供说明。
utils/static_arena.hpp:24
StaticArena< Size >::StaticArena (const StaticArena &)=delete
上游未提供说明。
utils/static_arena.hpp:22
void * StaticArena< Size >::allocate (const size_t size, const size_t alignment=alignof(std::max_align_t))
原子化基础分配接口。 通过 CAS 确保并发任务下只有一个分配者能成功推进 offset_。 这里没有 free 接口,因为分配器的目标就是“只增不减”,从而让实现尽量简单可靠。
utils/static_arena.hpp:32
size_t StaticArena< Size >::capacity () const
上游未提供说明。
utils/static_arena.hpp:81
void StaticArena< Size >::clear ()
重置分配器。 这会让所有已分配对象在逻辑上失效,只有在系统重新初始化时使用。 你可以把它理解为“整块内存池一起回收”,而不是逐个对象析构。
utils/static_arena.hpp:96
T * StaticArena< Size >::create (Args &&... args)
线程安全的对象构造接口。 注意:这里只保证“拿到一块唯一内存”是原子的,构造函数本身是否线程安全取决于 T 自己。 如果 T 的构造过程里会访问共享资源,调用方仍然需要自己处理并发关系。
utils/static_arena.hpp:65
StaticArena & StaticArena< Size >::operator= (const StaticArena &)=delete
上游未提供说明。
utils/static_arena.hpp:23
double StaticArena< Size >::usage_ratio () const
上游未提供说明。
utils/static_arena.hpp:85
size_t StaticArena< Size >::used () const
上游未提供说明。
utils/static_arena.hpp:77
static void delay_us (const uint32_t us)
微秒级忙等延时。 这个实现依赖 SystemCoreClock 估算循环次数,因此只适合对精度要求不高、但需要很短延时的场景。
utils/utils.h:25
static uint32_t isr_lock ()
上游未提供说明。
utils/isr_lock.h:14
static void isr_unlock (uint32_t primask)
上游未提供说明。
utils/isr_lock.h:20
std::byte StaticArena< Size >::buffer_[Size] [Size]
上游未提供说明。
utils/static_arena.hpp:17
std::atomic<size_t> StaticArena< Size >::offset_
上游未提供说明。
utils/static_arena.hpp:18CMSIS 中断临界区封装。 syhanjin 2026-02-24 适用于需要在裸机或 RTOS 环境里短暂屏蔽中断的场景。 这个封装保留并恢复原始 PRIMASK,避免嵌套临界区把外层状态弄乱。
utils/isr_lock.h原子化静态区线性分配器。 适合嵌入式场景下的短生命周期对象分配,不支持释放,只支持线性增长和整体清空。 如果系统里只有少量对象需要动态创建,但又不想引入通用堆分配器,这种线性分配器会更容易控制时序和占用。
utils/static_arena.hpp通用嵌入式小工具。 syhanjin 2026-02-01 这个文件里的函数都很小,目的主要是给上层代码补一些 HAL 没有直接提供的基础能力。 当前最常见的是微秒级忙等延时,适合初始化时序或者很短的同步等待,不适合拿来做长期阻塞。
utils/utils.h