contiki-main.c 文件的进程分析

Posted 我为自己代言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了contiki-main.c 文件的进程分析相关的知识,希望对你有一定的参考价值。

基本进程的创建实例:

共三部分:创建进程、进程自启动和进程的主体部分

 1 /* 声明一个名为hello_world_process和led_process进程
 2 PROCESS 宏实际上声明一个函数并定义一个进程控制块,
 3 新创建的进程 next 指针指向空,进程名称为“Hello world”和“led”*/
 4 PROCESS(hello_world_process, "Hello world");
 5 PROCESS(led_process, "led");
 6 /* 进程需要自动启动,即当节点启动时启动本进程 */
 7 AUTOSTART_PROCESSES(&led_process,&hello_world_process);
 8 
 9 /* hello_world_process进程的主体部分 */
10 PROCESS_THREAD(hello_world_process, ev, data)
11 {
12     /* 所有的进程开始执行前都必须要有这条语句 */
13     PROCESS_BEGIN();
14 
15     printf("Hello world :)\n");
16 
17     /* 所有的进程结束时都必须要有这条语句 */
18     PROCESS_END();
19 }
20 /*led_process进程的主题部分*/
21 PROCESS_THREAD(led_process, ev, data)
22 {
23   PROCESS_BEGIN();//宏用于辅助保存断点信息 (即行数 ),
24   //欲实现的代码必须放在宏 PROCESS_BEGIN 与 PROCESS_END 之间
25   while(1)
26   {
27     static struct etimer et;
28     etimer_set(&et, CLOCK_SECOND/10);
29     PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));
30     
31     led_on(0);
32     printf("LED0 ----ON-----\r\n");
33      
34     led_off(1); 
35     printf("LED1 -----OFF-----\r\n"); 
36  
37     etimer_set(&et, CLOCK_SECOND/10);
38     PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));
39         
40     led_off(0);
41     printf("LED0 -----OFF-----\r\n");  
42     led_on(1); 
43     printf("LED1 ----ON-----\r\n");
44     
45   }
46    PROCESS_END();//宏用于辅助保存断点信息 (即行数 )
47 }

然后在main函数中:

 1 int main()
 2 {
 3   
 4     BoardInit();
 5     DEBUG("BoardInit Done!");
 6     printf("Initialising\r\n"); 
 7     clock_init();//时钟初始化
 8     process_init();//进程初始化
 9 
10     process_start(&etimer_process, NULL);//启动系统进程
11     autostart_start(autostart_processes);//启动用户自启动进程
12     printf("Processes running\r\n");
13     while(1) {
14          do 
15         {
16          } 
17         while(process_run() > 0);
18         idle_count++;
19     }
20 }        

参考博客:http://blog.csdn.net/ferlansue/article/details/7256964

 

以上是关于contiki-main.c 文件的进程分析的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Android 系统文件分析 ( /proc/pid 进程号对应进程目录 | oom_adj | maps | smaps | mem | task | environ )(代码片

一个简单的时间片轮转内核代码的分析(课程作业)

Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 二 | 准备参数 | 远程调用 mmap 函数 )(代码片

Binder 机制Native 层 Binder 机制分析 ( service_manager.c | 开启 Binder | 注册 Binder 进程上下文 | 开启 Binder 循环 )(代码片

解决报错:在pycharm中使用os模块获取当前进程id,出现错误:AttributeError: module ‘os‘ has no attribute ‘getgid‘(图文并茂!!!)(代码片

Android 逆向修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system )(代码片