文档首页/ LiteOS/ 内核/ 事件/ 开发指导
更新时间:2021-07-08 GMT+08:00
分享

开发指导

使用场景

事件可应用于多种任务同步场景,在某些同步场景下可替代信号量。

功能

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。

开发流程

使用事件模块的典型流程如下:

  1. 执行make menuconfig命令,进入Kernel ---> Enable Event菜单,完成事件模块的配置。

    配置项

    含义

    取值范围

    默认值

    依赖

    LOSCFG_BASE_IPC_EVENT

    事件功能的裁剪开关

    YES/NO

    YES

    LOSCFG_BASE_IPC_EVENT_LIMIT

    最大支持的事件控制块数量

    1024

    LOSCFG_BASE_IPC_EVENT

  2. 调用事件初始化LOS_EventInit接口,初始化事件等待队列。
  3. 写事件LOS_EventWrite,写入指定的事件类型。
  4. 读事件LOS_EventRead,可以选择读取模式。
  5. 清除事件LOS_EventClear,清除指定的事件类型。

平台差异性

无。

相关文档