免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1410 | 回复: 0
打印 上一主题 下一主题

Contiki学习笔记:进程、事件、etimer关系 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 03:25 |只看该作者 |倒序浏览

摘要:

    本文以通俗的语言介绍进程、事件、etimer三者关系。


    进程process、事件event_data、etimer都是Contiki的核心数据结构,理清这三者关系,将有助于对系统的理解。

一、事件与etimer关系

    事件即可以分为同步事件、异步事件,也可以分为定时器事件、内部事件、外部事件。而etimer属于定时器事件的一种,可以理解成Contiki系统把etimer单列出来,方便管理(由etimer_process系统进程管理)。

    当etimer_process执行时,会遍历etimer链表,检查etimer是否有到期的,凡有timer到期就把事件PROCESS_EVENT_TIMER加入到事件队列中,并将该etimer成员变量p指向PROCESS_NONE。在这里,PROCESS_NONE用于标识该etimer是否到期,函数etimer_expired会根据etimer的p是否指向PROCESS_NONE来判断该etimer是否到。详情参考博文《Contiki学习笔记:系统进程etimer_process》。

二、进程与etimer关系 

    etimer与process还不是一一对应的关系,一个etimer必定绑定一个process,但process不一定非得绑定etimer。etimer只是一种特殊事件罢了。

三、进程与事件关系

    当有事件传递给进程时,就新建一个事件加入事件队列,并绑定该进程,所以一个进程可以对应于多个事件(即事件队列有多个事件跟同一个进程绑定),而一个事件可以广播给所有进程,即该事件成员变量p指向空。当调用do_event函数时,将进程链表所有进程投入运行。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP