事件标志组:实用服务和数据结构
查看 RTOS Revealed 系列
本文继续介绍事件标志组。
事件标志组实用服务
Nucleus RTOS 具有三个 API 调用,它们提供与事件标志组关联的实用功能:返回有关组的信息、返回应用程序中事件标志组的数量以及返回指向应用程序中所有组的指针。前两个是在 Nucleus SE 中实现的。
事件标志组信息
此服务调用获取有关事件标志组的信息选择。 Nucleus SE 实现与 Nucleus RTOS 的不同之处在于它返回的信息较少,因为不支持对象命名和挂起顺序,并且可能无法启用任务挂起。
Nucleus RTOS API 调用事件组信息
服务调用原型:
<块引用>
STATUS NU_Event_Group_Information(NU_EVENT_GROUP *group,
CHAR *name, UNSIGNED *even t_flags, UNSIGNED *tasks_waiting,
NU_TASK **first_task);
参数:
<块引用>组 – 指向用户提供的事件标志组控制块的指针
姓名 – 指向事件标志组名称的 8 个字符的目标区域的指针;这包括空终止符的空间
事件标志 – 一个指向变量的指针,它将接收指定事件标志组的当前值
tasks_waiting – 指向一个变量的指针,该变量将接收在此事件标志组上暂停的任务数
first_task – 指向 NU_TASK 类型变量的指针 它将接收一个指向第一个挂起任务的指针
退货:
<块引用>NU_SUCCESS – 通话成功
NU_INVALID_GROUP – 事件标志组指针无效
Nucleus SE API 调用事件组信息
此 API 调用支持 Nucleus RTOS API 的关键功能。
服务调用原型:
<块引用>
STATUS NUSE_Event_Group_Information(NUSE_EVENT_GROUP 组,
U8 *event_flags, U8 *tasks_waiting, NUSE_TASK *first_task);
参数:
<块引用>组 – 请求信息的事件标志组的索引
事件标志 – 一个指向变量的指针,它将接收指定事件标志组的当前值
tasks_waiting – 一个指向变量的指针,该变量将接收在此事件标志组上挂起的任务数(如果任务挂起被禁用,则不返回任何内容)
first_task – 指向 NUSE_TASK 类型变量的指针 它将接收第一个挂起任务的索引(如果禁用了任务挂起,则不返回任何内容)
退货:
<块引用>NUSE_SUCCESS – 通话成功
NUSE_INVALID_GROUP – 事件标志组索引无效
Nucleus SE 实现事件组信息
这个 API 调用的实现非常简单:
*event_flags =NUSE_Event_Group_Data[组]; #if NUSE_BLOCKING_ENABLE *tasks_waiting =NUSE_Event_Group_Blocking_Count[group]; if (NUSE_Event_Group_Blocking_Count[group] !=0) { U8 索引; for (index=0; index该函数返回事件标志组的值。然后,如果启用阻塞API调用,则返回等待任务的数量和第一个的索引(否则这两个参数设置为0)。
获取事件标志组的数量
此服务调用返回应用程序中配置的事件标志组的数量。在 Nucleus RTOS 中,这会随时间变化,返回值将代表当前组的数量,而在 Nucleus SE 中,返回值是在构建时设置的,不能更改。
Nucleus RTOS API 调用事件标志组计数
服务调用原型:
<块引用>未签名的 NU_Established_Event_Groups(VOID);
参数:
<块引用>无
退货:
<块引用>应用中当前创建的事件标志组数量
Nucleus SE API 调用事件标志组计数
此 API 调用支持 Nucleus RTOS API 的关键功能。
服务调用原型:
<块引用>U8 NUSE_Event_Group_Count(void);
参数:
<块引用>无
退货:
<块引用>应用中配置的事件标志组数
Nucleus SE 实现事件标志组计数
这个 API 调用的实现几乎非常简单:#define 的值 符号 NUSE_EVENT_GROUP_NUMBER 被退回。
嵌入式