赞
踩
事件是一种实现任务间通信的机制,可用于实现任务间的同步,但事件通信只能是事件类型的通信,无数据传输。一个任务可以等待多个事件的发生:可以是任意一个事件发生时唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒任务进行事件处理。事件集合用 32 位无符号整型变量来表示,每一位代表一个事件。
事件的第 25 位为保留位,不可以进行位设置。
事件(Event)是一种任务间的通信机制,可用于任务间的同步操作。事件的特点是:
提供了事件初始化、事件读写、事件清零、事件销毁等接口。
事件初始化:会创建一个事件控制块,该控制块维护一个已处理的事件集合,以及等待特定事件的任务链表。
写事件:会向事件控制块写入指定的事件,事件控制块更新事件集合,并遍历任务链表,根据任务等待具体条件满足情况决定是否唤醒相关任务。
读事件:如果读取的事件已存在时,会直接同步返回。其他情况会根据超时时间以及事件触发情况,来决定返回时机:等待的事件条件在超时时间耗尽之前到达,阻塞任务会被直接唤醒,否则超时时间耗尽该任务才会被唤醒。
读事件条件满足与否取决于入参 eventMask 和 mode,eventMask 即需要关注的事件类型掩码。mode 是具体处理方式,在 los_event.h 中定义了以下三种情况:
事件清零:根据指定掩码,去对事件控制块的事件集合进行清零操作。当掩码为 0 时,表示将事件集合全部清零。当掩码为 0xffff 时,表示不清除任何事件,保持事件集合原状。
事件销毁:销毁指定的事件控制块。
功能类别 | 接口函数 | 描述 |
---|---|---|
初始化事件 | LOS_EventInit | 初始化一个事件控制块 |
读/写事件 | LOS_EventRead | 读取指定事件类型,超时时间为相对时间:单位为Tick |
LOS_EventWrite | 写指定的事件类型 | |
清除事件 | LOS_EventClear | 清除指定的事件类型 |
校验事件掩码 | LOS_EventPoll | 根据用户传入的事件ID、事件掩码及读取模式,返回用户传入的事件是否符合预期 |
销毁事件 | LOS_EventDestroy | 销毁指定的事件控制块 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。