文档首页 > > 开发指南> 内核开发指南> 事件> 开发指导

开发指导

分享
更新时间:2020/06/24 GMT+08:00

使用场景

事件可应用于多种任务同步场合,能够一定程度替代信号量。

功能

Huawei LiteOS系统中的事件模块为用户提供下面几个接口。

功能分类

接口名

描述

事件初始化

LOS_EventInit

初始化一个事件控制块

读事件

LOS_EventRead

读取指定事件类型,超时时间为相对时间:单位为Tick

写事件

LOS_EventWrite

写指定的事件类型

清除事件

LOS_EventClear

清除指定的事件类型

校验事件掩码

LOS_EventPoll

根据用户传入的事件值、事件掩码及校验模式,返回用户传入的事件是否符合预期

销毁事件

LOS_EventDestroy

销毁指定的事件控制块

开发流程

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

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

Event错误码

对事件存在失败的可能性操作,包括事件初始化,事件销毁,事件读写,事件清除。

序号

定义

实际值

描述

参考解决方案

1

LOS_ERRNO_EVENT_SETBIT_INVALID

0x02001c00

事件ID的第25个bit不能设置为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

传入的参数为空指针

传入非空入参

错误码定义:错误码是一个32位的存储单元,31~24位表示错误等级,23~16位表示错误码标志,15~8位代表错误码所属模块,7~0位表示错误码序号,如下所示:

#define LOS_ERRNO_OS_ERROR(MID, ERRNO) \

(LOS_ERRTYPE_ERROR | LOS_ERRNO_OS_ID | ((UINT32)(MID) << 8) | (ERRNO))

LOS_ERRTYPE_ERROR:Define critical OS errors

LOS_ERRNO_OS_ID:OS error code flag

MID:OS_MOUDLE_ID

LOS_MOD_EVENT:Event module ID

ERRNO:error ID number

例如:

#define LOS_ERRNO_EVENT_READ_IN_LOCK LOS_ERRNO_OS_ERROR(LOS_MOD_EVENT, 0x05)

平台差异性

无。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问