跳转到内容

utils API

文档稀疏
符号
18
已记录
7
修订版本
0.1.0+855c407f828e

11 / 18 个公开 API 符号没有说明。

1

函数

12

StaticArena::StaticArena

                    StaticArena< Size >::StaticArena (const StaticArena &)=delete
                  

上游未提供说明。

utils/static_arena.hpp:22

StaticArena::allocate

                    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

StaticArena::clear

                    void StaticArena< Size >::clear ()
                  

重置分配器。 这会让所有已分配对象在逻辑上失效,只有在系统重新初始化时使用。 你可以把它理解为“整块内存池一起回收”,而不是逐个对象析构。

utils/static_arena.hpp:96

StaticArena::create

                    T * StaticArena< Size >::create (Args &&... args)
                  

线程安全的对象构造接口。 注意:这里只保证“拿到一块唯一内存”是原子的,构造函数本身是否线程安全取决于 T 自己。 如果 T 的构造过程里会访问共享资源,调用方仍然需要自己处理并发关系。

utils/static_arena.hpp:65

StaticArena::operator=

                    StaticArena & StaticArena< Size >::operator= (const StaticArena &)=delete
                  

上游未提供说明。

utils/static_arena.hpp:23

delay_us

                    static void delay_us (const uint32_t us)
                  

微秒级忙等延时。 这个实现依赖 SystemCoreClock 估算循环次数,因此只适合对精度要求不高、但需要很短延时的场景。

utils/utils.h:25

isr_unlock

                    static void isr_unlock (uint32_t primask)
                  

上游未提供说明。

utils/isr_lock.h:20

变量

2

文件

3

utils/isr_lock.h

CMSIS 中断临界区封装。 syhanjin 2026-02-24 适用于需要在裸机或 RTOS 环境里短暂屏蔽中断的场景。 这个封装保留并恢复原始 PRIMASK,避免嵌套临界区把外层状态弄乱。

utils/isr_lock.h

utils/static_arena.hpp

原子化静态区线性分配器。 适合嵌入式场景下的短生命周期对象分配,不支持释放,只支持线性增长和整体清空。 如果系统里只有少量对象需要动态创建,但又不想引入通用堆分配器,这种线性分配器会更容易控制时序和占用。

utils/static_arena.hpp

utils/utils.h

通用嵌入式小工具。 syhanjin 2026-02-01 这个文件里的函数都很小,目的主要是给上层代码补一些 HAL 没有直接提供的基础能力。 当前最常见的是微秒级忙等延时,适合初始化时序或者很短的同步等待,不适合拿来做长期阻塞。

utils/utils.h