事件控制块的清空与状态查询
发布日期:2021-07-01 04:26:10
浏览次数:2
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年05月05日 11时52分53秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
简化网站开发:SiteMesh插件
2019-05-02
Struts1和Struts2的区别
2019-05-02
Spring框架:Spring安全
2019-05-02
Webx框架:Spring Schema 和 Spring Ext
2019-05-02
Webx框架:依赖注入
2019-05-02
Webx框架:Pipeline简介
2019-05-02
Webx框架:RequestContext详解
2019-05-02
Webx框架:Valve详解
2019-05-02
Webx框架:ResourceLoader
2019-05-02
Webx框架:AutoConfig
2019-05-02
Webx框架:会话管理
2019-05-02
Webx框架:表单验证
2019-05-02
开发工具系列(一):Btrace——线上Debug工具
2019-05-02
线上操作使用tmux提高工作效率
2019-05-02
什么是RAID?RAID有什么用?RAID原理
2019-05-02
浅谈Java的匿名类
2019-05-02
用Swagger生成接口文档
2019-05-02
Web性能优化:基本思路和常见工具
2019-05-02
谈谈工作上的杂事
2019-05-02