Event 事件系统
Event 类是 LibXR 中用于事件驱动机制的核心中间件,支持事件注册、事件触发、中断安全调用与事件绑定,是构建嵌入式任务协作的重要工具。
模块功能
- 基于 事件 ID 注册多个回调;
- 支持 线程/中断上下文触发;
- 可通过
GetList()实现 中断上下文安全事件触发; - 支持 事件桥接绑定,用于跨模块事件流转;
- 内部采用 红黑树 + 无锁链表 实现高效、并发安全存储。
快速使用
注册事件回调
int counter = 0;
LibXR::Event evt;
auto cb = LibXR::Event::Callback::Create(
[](bool, int *cnt, uint32_t event) {
(*cnt)++;
ASSERT(event == 0x10);
},
&counter);
evt.Register(0x10, cb);
触发事件
evt.Active(0x10); // 普通线程上下文触发
中断上下文触发(需提前获取回调链表)
// 在非回调中获取事件链表
auto list = evt.GetList(0x1234);
// 在回调中触发
evt.ActiveFromCallback(list, 0x1234);