update_time(void)(//core/sys/etimer.c)函数寻找下一个将要expire的时间。
ctimer.c-->etimer.c-->timer.c-->clock.c
依次组成了Contiki中的时钟及时间函数的使用。
在etimer.c中的PT调用timer_expire()判断时间是否expire。
如果expire,则通过事件告知ctimer.c中的PT此etimer已经expire,
则ctimer.c中的PT找到包含相应的etimer的ctimer然后执行设置的回调函数。
关于问题3:
是以前没有弄清楚PT在Contiki中的机制,
现在明白了很多。
这里是在ctimer在使用前需要先初始化。这里的初始化,就在Contiki里添加了ctimer的PT。
etimer的PT是在系统启动时就已经添加的。
PT的调用机制参见《Protothread机制文档(contiki-2.6\doc\pt-doc.txt)》,
《Contiki:Protothread切换机制理解》