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 )(代码片