没有合适的资源?快使用搜索试试~ 我知道了~
首页protothread进程控制模型讲解
protothread进程控制模型讲解
4星 · 超过85%的资源 需积分: 33 37 下载量 153 浏览量
更新于2023-03-03
评论 1
收藏 93KB DOC 举报
以contiki 2.4中最简单的example/hello_world.c为例,讲解protothread进程再contiki操作系统的实现过程,原创为WenShiyang
资源详情
资源评论
资源推荐
以 中最简单的 为例。程序的代码如下:
!"#$%&'
( )*
+,- -+- !.&'
/
0 1
2 -$+!"3"&4
5 66 789:!&'66666666)*;1
< 66=!#$">?%&'669@A
B 66!&4666666666666C=3
66 D+9-E:-!&'6666D=A
66F
( 66 :!&'6666666666)*;
F
复制代码
+=A
是 的进程控制模型,是 关于进程的精华知识,详情可参考
。
其它关于 的资料也可参考 -A ;,里面介绍了关于
的 、、,以及 * 的一些内容,
归纳和总结了里面的一些库函数,这些其实在 的源码中都可以找到。
程序有着非常规范的程序步骤, 宏是用来声明一个进程;
+,- -+- 宏是使这个进程自启动, -$+ 里面定义的是程
序的主体,并且主体内部要以 789:!&开头,以 :!&来结束。
接下来一个一个宏展开来看清它们的真面目:
1.PROCESS
宏定义在 ?; 的 文件内,如下:
G1 !"&6666666666?
66 -$+!"3"&'666666?
( 66*H4:,CC""6666?
666666666666666666GGF
复制代码
-$+ 的宏定义如下,它用来定义一个 的 I;:
G1 -$+!"3"&?
--$+!GG!*"6
?
( 6666666666666666666633"66666666666666?
66666666666666666666&&
复制代码
最终又回归到 --$+,所以说 +=A
。
看看 --$+ 宏中参数的定义:
*4
66'
( F';=*A'
/ ;=*A3'
0
2 ;=3666666'
复制代码
第一个参数 是英文全称是 *(本地延续?,这个不好翻译),它可以
说就是 的控制参数,因为 的精华在 的 控制语句,这
个 就是 里面的参数;
第二个参数就是 给这个进程传递的事件了,其实就是一个 *A 类型的
参数,具体的参数值在 中定义;
第三个参数也是给进程传递的一个参数(举个例子,假如要退出一个进程的话,那么必须
把这个进程所对应的 也要从 队列 清除掉,那么进程在死掉之前就
要给 传递这个参数,参数的值就是进程本身,这样才能是
在 队列里找到相应的 进而清除)。
--$+ 是用来定义一个 ,每个 都要用到这个宏,其宏
定义如下:
G1--$+!A&A
复制代码
所以 !"J$J&'的展开代码如下:
!*
"33"&'
*H4!!3&B&"J$
J"F'
复制代码
第一个语句是声明了一个 的函数,返回值是
型,其实就是声明了 这个 的 I; 函数,接下来的
-$+ 宏其实就是这个函数的定义。
第二个语句是声明了一个 类型的数据,是 。下面看看
* 是怎么定义的。
*4
66*'
( 66'
66--$+!!&!*"3"
&&'
/ 66*'
0 66*A"'
2 F'
复制代码
因为要维持一个进程的链表,* 是指向它的下一个进程,声明一个
时初始化为 B;
指的是这个进程的名字;
(第三个展开来就是 !&!*"3"
&, 是一个函数指针,也就是说 包含了一个函数,每个
都包含了一个函数, 的执行其实就是这个函数体的执行。
再来看看 的定义:
*4
66'66;=*A'
( F'
复制代码
* 在这有何用,这正是 的精髓所在,看 内在 K
文件里的一段说明:
-=**!&
**==*=*LI;-
I=!&IM*
;I=***=!&!&
上面已经提到过 表示 *,它是为 !&语句服务的,保留
的 值,在下一次 执行的时候便可通过 语句直接跳到要执行的
语句,从而可以恢复 的执行,实现对 的控制。
/还有 *A", 表示 的状态,具体定义在
文件中;一般 初始化的时候 的值为 B,假如
的值为 的话,可以优先执行,具体先不深入讨论。
2.AUTOSTART_PROCESSES 先看看 +,- -+- 的宏定义:
G1+,- -+- !&66?
**NOH4E++8 "
:,CCF
复制代码
* 是一个指针数组,每个指针指向的都是一个 。
所以展开的代码就是:
**NOH
4."!!3&B&F'
复制代码
剩余11页未读,继续阅读
contiki
- 粉丝: 14
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- ExcelVBA中的Range和Cells用法说明.pdf
- 基于单片机的电梯控制模型设计.doc
- 主成分分析和因子分析.pptx
- 共享笔记服务系统论文.doc
- 基于数据治理体系的数据中台实践分享.pptx
- 变压器的铭牌和额定值.pptx
- 计算机网络课程设计报告--用winsock设计Ping应用程序.doc
- 高电压技术课件:第03章 液体和固体介质的电气特性.pdf
- Oracle商务智能精华介绍.pptx
- 基于单片机的输液滴速控制系统设计文档.doc
- dw考试题 5套.pdf
- 学生档案管理系统详细设计说明书.doc
- 操作系统PPT课件.pptx
- 智慧路边停车管理系统方案.pptx
- 【企业内控系列】企业内部控制之人力资源管理控制(17页).doc
- 温度传感器分类与特点.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论3