开发指导
使用场景
事件可应用于多种任务同步场景,在某些同步场景下可替代信号量。
功能
Huawei LiteOS 的事件模块为用户提供下面几种功能,接口详细信息可以查看API参考。
功能分类 | 接口名 | 描述 |
|---|---|---|
初始化事件 | LOS_EventInit | 初始化一个事件控制块 |
读/写事件 | LOS_EventRead | 读取指定事件类型,超时时间为相对时间:单位为Tick |
LOS_EventWrite | 写指定的事件类型 | |
清除事件 | LOS_EventClear | 清除指定的事件类型 |
校验事件掩码 | LOS_EventPoll | 根据用户传入的事件ID、事件掩码及读取模式,返回用户传入的事件是否符合预期 |
销毁事件 | LOS_EventDestroy | 销毁指定的事件控制块 |
Event错误码
对存在失败可能性的操作返回对应的错误码,以便快速定位错误原因。
序号 | 定义 | 实际值 | 描述 | 参考解决方案 |
|---|---|---|---|---|
1 | LOS_ERRNO_EVENT_SETBIT_INVALID | 0x02001c00 | 写事件时,将事件ID的第25个bit设置为1。这个比特位OS内部保留,不允许设置为1 | 事件ID的第25bit置为0 |
2 | LOS_ERRNO_EVENT_READ_TIMEOUT | 0x02001c01 | 读事件超时 | 增加等待时间或者重新读取 |
3 | LOS_ERRNO_EVENT_EVENTMASK_INVALID | 0x02001c02 | 入参的事件ID是无效的 | 传入有效的事件ID参数 |
4 | LOS_ERRNO_EVENT_READ_IN_INTERRUPT | 0x02001c03 | 在中断中读取事件 | 启动新的任务来获取事件 |
5 | LOS_ERRNO_EVENT_FLAGS_INVALID | 0x02001c04 | 读取事件的mode无效 | 传入有效的mode参数 |
6 | LOS_ERRNO_EVENT_READ_IN_LOCK | 0x02001c05 | 任务锁住,不能读取事件 | 解锁任务,再读取事件 |
7 | LOS_ERRNO_EVENT_PTR_NULL | 0x02001c06 | 传入的参数为空指针 | 传入非空入参 |
8 | LOS_ERRNO_EVENT_READ_IN_SYSTEM_TASK | 0x02001c07 | 在系统任务中读取事件,如idle和软件定时器 | 启动新的任务来获取事件 |
9 | LOS_ERRNO_EVENT_SHOULD_NOT_DESTORY | 0x02001c08 | 事件链表上仍有任务,无法被销毁 | 先检查事件链表是否为空 |

错误码定义见错误码简介。8~15位的所属模块为事件模块,值为0x1c。
开发流程
使用事件模块的典型流程如下:
- 执行make menuconfig命令,进入Kernel ---> Enable Event菜单,完成事件模块的配置。
配置项
含义
取值范围
默认值
依赖
LOSCFG_BASE_IPC_EVENT
事件功能的裁剪开关
YES/NO
YES
无
LOSCFG_BASE_IPC_EVENT_LIMIT
最大支持的事件控制块数量
无
1024
LOSCFG_BASE_IPC_EVENT
- 调用事件初始化LOS_EventInit接口,初始化事件等待队列。
- 写事件LOS_EventWrite,写入指定的事件类型。
- 读事件LOS_EventRead,可以选择读取模式。
- 清除事件LOS_EventClear,清除指定的事件类型。
平台差异性
无。

