事件控制块的清空与状态查询
发布日期:2021-07-01 04:26:10
浏览次数:3
分类:技术文章
本文共 2170 字,大约阅读时间需要 7 分钟。
文章目录
1 事件控制块的清空与状态查询
1.1 设计实现
事件控制块的清空:
事件控制块的查询:/************************************************************************************************************ Function name : tEventRemoveAll** Descriptions : 清除所有等待中的任务,将事件发送给所有任务** parameters : event 事件控制块** parameters : msg 事件消息** parameters : result 告知事件的等待结果** Returned value : 唤醒的任务数量***********************************************************************************************************/uint32_t tEventRemoveAll (tEvent * event, void * msg, uint32_t result){ tNode * node; uint32_t count; // 进入临界区 uint32_t status = tTaskEnterCritical(); // 获取等待中的任务数量 count = tListCount(&event->waitList); // 遍历所有等待中的任务 while ((node = tListRemoveFirst(&event->waitList)) != (tNode *)0) { // 转换为相应的任务结构 tTask * task = (tTask *)tNodeParent(node, tTask, linkNode); // 设置收到的消息、结构,清除相应的等待标志位 task->waitEvent = (tEvent *)0; task->eventMsg = msg; task->waitEventResult = result; task->state &= ~TINYOS_TASK_WAIT_MASK; // 任务申请了超时等待,这里检查下,将其从延时队列中移除 if (task->delayTicks != 0) { tTimeTaskWakeUp(task); } // 将任务加入就绪队列 tTaskSchedRdy(task); } // 退出临界区 tTaskExitCritical(status); return count;}/************************************************************************************************************ Function name : tEventWaitCount** Descriptions : 事件控制块中等待的任务数量** parameters : event 事件控制块** parameters : msg 事件消息** parameters : result 告知事件的等待结果** Returned value : 唤醒的任务数量***********************************************************************************************************/uint32_t tEventWaitCount (tEvent * event){ uint32_t count = 0; // 进入临界区 uint32_t status = tTaskEnterCritical(); count = tListCount(&event->waitList); // 退出临界区 tTaskExitCritical(status); return count;}
参考资料:
转载地址:https://muzimin.blog.csdn.net/article/details/105048444 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月20日 08时01分46秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MSNP18协议分析(二)--- MSN登录身份认证
2019-05-02
Windows Phone开发(一)-- 开发环境和结构
2019-05-02
Windows Phone开发(二)-- 框架结构和启动过程
2019-05-02
Windows Phone开发(三)-- 导航原理分析
2019-05-02
Windows Phone开发(四)-- 导航事件和传值
2019-05-02
Windows Phone开发(五)-- 导航控制
2019-05-02
Windows Phone开发(六)-- 多任务之墓碑机制
2019-05-02
Flutter学习系列(1)— 入门
2019-05-02
Flutter学习系列(2)— 安装SDK
2019-05-02
Flutter学习系列(3)— 编译和运行
2019-05-02
Flutter学习系列(4)— 程序初始化
2019-05-02
KVM 虚拟机命令行安装配置
2019-05-02
KVM/QEMU桥接网络设置及kvm资料
2019-05-02
kvm和远程管理工具virt-manager的部署
2019-05-02
Debian镜像源服务器的架设
2019-05-02
修改设备管理器信息,修改我的电脑系统属性,修改dxdiag信息
2019-05-02
Linux虚拟化技术Xen和KVM的优势特点对比
2019-05-02
泛虚拟化技术(以Xen为例)
2019-05-02
虚拟化技术未来发展趋势
2019-05-02
KVM虚拟机介绍
2019-05-02