contiki list 链表】的更多相关文章

1 相关宏和数据结构 1.1 LIST_CONCAT #define LIST_CONCAT2(s1, s2) s1##s2 #define LIST_CONCAT(s1, s2) LIST_CONCAT2(s1, s2) 该宏的作用非常简单,将s1,s2拼接在一起.其中,##起连接作用,编译器在预处理时负责将s1,s2连接在一起.比如hello_##world经过编译器预处理后就变成了hello_world了. 1.2 LIST typedef void ** list_t; #define…
想来想去,还是得先写一个程序,找下感觉,增强一下自信心,那就国际惯例Hello World吧.先到这个网址下一个Instant Contiki 2.7.之所以没用3.0的,是因为有些问题,我源码是下的3.0的.http://sourceforge.net/projects/contiki/files/Instant%20Contiki/下完后装个VMWear,载入Instant Contiki 2.7虚拟机,就可以在Ubuntu上用contiki了.打开终端,默认是用user用户名登录,密码也是…
这幅图片是对前面  <<contiki学习笔记之九>>  的一个补充说明. 简单的玩玩etimer <contiki学习笔记之九> 或许,自己正在掀开contiki process最后的一层面纱: 或许,还有一段路要走: 或许,已经掀开... --------------- 一切,都只是process:只有有了process,才会轮到etimer_process  发言,除非,抛却一切机制,裸机实现etimer... process,是什么? 一个链表,还是单向的,仅此…
好吧,昨晚上研究了switch()的底层实现原理--发现它并不是一般C语言教科书上那样所言,当然,这对于本身就非常熟悉汇编的同学来说,是小菜一碟.世界上,很多事情是巧合与必然的结合体,没有无缘无故的爱,也没有无缘无故的恨---我为啥会被一个switch给挡出去路?这个switch在contiki中又有何重要作用?且不回答这个问题,先来看看如何使用昨天晚上展开的PROCESS_YIELD()宏. 说明:这里就只是贴打印信息,分析打印信息了,不再贴分析过程中的代码了. 一,修改自己的hello-wo…
说明:本文依然依赖于 contiki/platform/native/contiki-main.c 文件. ------------------------------------------------------------------------------------------------------------------------------------- 根据上一个笔记里面添加的printf()语句的打印信息提示,hello world 打印是在执行了 autostart_st…
我们阅读一下contiki的源码,list.c(路径是./core/lib/list.h). #include "lib/list.h" #define NULL 0 struct list { struct list *next; }; 这就是核心结构体了,发现了吗?没有数据域,成员就是一个指针.其实这个有点类似Linux里面的链表,对,就是嵌入在结构体里面的那个list.我们继续往下看. void list_init(list_t list) { *list = NULL; } 初…
一个偶然的机会,我接触到了contiki这个家伙. Contiki 是一个开源的.高度可移植的.采用 C 语言开发的非常小型的嵌入式操作系统,针对小内存微控制器设计,适用于联网嵌入式系统和无线传感器网络,由瑞典计算机科学学院(Swedish Institute of Computer Science)的Adam Dunkels和他的团队开发. Contiki支持IPv4/IPv6通信,支持TCP/UDP,还提供了线程.定时器.文件系统等功能.它的官方网站是http://www.contiki-o…
一.Etimer概述 Etimer提供产生时间事件(timed event)的机制,当设定好的timer到期时,将会给设定etimer的process发送一个PROCESS_EVENT_TIMER 事件. Etimer模块调用clock_time获得当前系统的时间. The Contiki etimer library provides a timer mechanism that generate timed events. An event timer will post the event…
本文涉及到的Protothread机制知识,在http://www.cnblogs.com/songdechiu/p/5793717.html 一.进程类型 进程类型主要有协同式(cooperative)和抢占式(preemptive)两种. 协同式进程,要等其他进程运行完进程实体函数(进程不一定运行完,这个时候有可能是阻塞,总之只要执行到return语句,具体看protothread机制),然后才能开始运行. 抢占式进程,会优先运行,当有抢占式进程需要执行时,协同式进程将会被挂起,直到抢占式进…
链表在 Redis 中的应用非常广泛, 比如列表键的底层实现之一就是链表: 当一个列表键包含了数量比较多的元素, 又或者列表中包含的元素都是比较长的字符串时, Redis 就会使用链表作为列表键的底层实现.除了链表键之外, 发布与订阅.慢查询.监视器等功能也用到了链表, Redis 服务器本身还使用链表来保存多个客户端的状态信息, 以及使用链表来构建客户端输出缓冲区(output buffer). redis实现链表的数据结构: //链表节点数据结构 typedef struct listNod…