标签:
process_run用于处理系统所有needspoll标记为1的进程及处理事件队列的下一个事件。本文深入原码,详细分析,也包括do_poll和do_event函数。
一、运行process_run
二、process_run剖析
process_run处理系统所有needspoll标记为1的进程及处理事件队列的下一个事件,源代码如下:
透过上述的源代码,可以直观看出needspoll标记为1的进程可以优先执行。并且每执行一次process_run,将处理系统所有needspoll标记为1的进程,而只处理事件队列的一个事件。
2.1 do_poll函数
复位全局变量poll_requested,遍历整个进程链表,将needspoll标记为1的进程投入运行,并将相应的needspoll复位。源代码如下:
2.2 do_event函数
do_event处理事件队列的一个事件,有两种事件需特殊处理:PROCESS_BROADCAST和PROCESS_EVENT_INIT。前者是广播事件,需处理所有进程,后者是初始化事件,需将进程状态设为PROCESS_STATE_RUNNING。源代码如下:
Contiki 学习笔记:????process_run 解析
标签:
原文地址:http://blog.csdn.net/broadce/article/details/45818207