# 事件管理

TIP

  • MadEvent.h
  • MadEvent.c

TIP

“事件”与“信号”、“消息队列”不同,当某个“事件”触发时,将激活等待该事件的所有线程。

类型 约定描述
MadEventCB_t 事件控制块
MadEventCB_t* 事件
MadEventCB_t** 事件指针

# MadOS 事件触发类型

类型 说明
MEMODE_WAIT_ALL 全部条件满足才触发事件
MEMODE_WAIT_ONE 单一条件满足即触发事件

# MadOS 事件操作模式

当产生触发条件但没有线程等待事件时:

模式 说明
MEOPT_DIRECT 该事件将被抛弃
MEOPT_DELAY 该事件将被保持

# madEventCreate

MadEventCB_t* madEventCreate(MadUint mask, MadEventMode mode, MadEventOpt opt)
1

新建事件。

参数名 方向 说明
mask in 事件触发掩码
mode in 事件触发类型
opt in 事件操作模式
返回值 说明
0 失败
NZ 成功(指向事件控制块的指针)

# madEventWait

MadU8 madEventWait(MadEventCB_t **pEvent, MadUint *mask, MadTim_t to)
1

等待事件。

参数名 方向 说明
pEvent in 事件指针
mask out 接收事件当前掩码
to in 等待超时的时间值(0则无时限)
返回值 说明
MAD_ERR_x 错误代码
MAD_ERR_OK 事件触发

# madEventDoCheck

MadU8 madEventDoCheck(MadEventCB_t **pEvent, MadUint *mask, MadBool clear)
1

检查事件当前掩码。

参数名 方向 说明
pEvent in 事件指针
mask out 接收事件当前掩码
clear in 是否清除当前掩码
返回值 说明
MAD_ERR_x 错误代码
MAD_ERR_OK 事件触发

# madDoEventTrigger

void madDoEventTrigger(MadEventCB_t **pEvent, MadUint mask, MadU8 err)
1

以mask为掩码值激活事件掩码。

参数名 方向 说明
pEvent in 事件指针
mask in 激活掩码
err in 激活错误代码(通常为MAD_ERR_OK)

# madDoEventShut

void madDoEventShut(MadEventCB_t **pEvent, MadBool opt)
1

终止事件(但不释放控制块所占用的内存)。

参数名 方向 说明
pEvent in 事件指针
opt in 是否恢复等待线程

opt

说明
MTRUE 以 MAD_ERR_EVENT_INVALID 为 err 释放信号量(恢复所有等待线程)
MFALSE 忽略所有等待线程

# madDoEventDelete

void madDoEventDelete(MadEventCB_t **pEvent, MadBool opt)
1

删除事件。

参数名 方向 说明
pEvent in 事件指针
opt in 是否恢复等待线程

opt

说明
MTRUE 以 MAD_ERR_EVENT_INVALID 为 err 释放信号量(恢复所有等待线程)
MFALSE 忽略所有等待线程

# madEventWaitNR(pEvent, to)

MadU8 madEventWait(MadEventCB_t **pEvent, MadUint *mask, MadTim_t to)
1
参数
mask MNULL

# madEventCheck(pEvent, mask)

MadU8 madEventDoCheck(MadEventCB_t **pEvent, MadUint *mask, MadBool clear)
1
参数
clear MTRUE

# madEventCheckNC(pEvent, mask)

MadU8 madEventDoCheck(MadEventCB_t **pEvent, MadUint *mask, MadBool clear)
1
参数
clear MFALSE

# madEventClear(pEvent)

MadU8 madEventDoCheck(MadEventCB_t **pEvent, MadUint *mask, MadBool clear)
1
参数
mask MNULL
clear MTRUE

# madEventTrigger(pEvent, mask)

void madDoEventTrigger(MadEventCB_t **pEvent, MadUint mask, MadU8 err)
1
参数
err MAD_ERR_OK

# madEventShut(pEvent)

void madDoEventShut(MadEventCB_t **pEvent, MadBool opt)
1
参数
opt MTRUE

# madEventDelete(pEvent)

void madDoEventDelete(MadEventCB_t **pEvent, MadBool opt)
1
参数
opt MTRUE