contiki-main.c 文件的进程分析
基本进程的创建实例:
共三部分:创建进程、进程自启动和进程的主体部分
/* 声明一个名为hello_world_process和led_process进程
PROCESS 宏实际上声明一个函数并定义一个进程控制块,
新创建的进程 next 指针指向空,进程名称为“Hello world”和“led”*/
PROCESS(hello_world_process, "Hello world");
PROCESS(led_process, "led");
/* 进程需要自动启动,即当节点启动时启动本进程 */
AUTOSTART_PROCESSES(&led_process,&hello_world_process); /* hello_world_process进程的主体部分 */
PROCESS_THREAD(hello_world_process, ev, data)
{
/* 所有的进程开始执行前都必须要有这条语句 */
PROCESS_BEGIN(); printf("Hello world :)\n"); /* 所有的进程结束时都必须要有这条语句 */
PROCESS_END();
}
/*led_process进程的主题部分*/
PROCESS_THREAD(led_process, ev, data)
{
PROCESS_BEGIN();//宏用于辅助保存断点信息 (即行数 ),
//欲实现的代码必须放在宏 PROCESS_BEGIN 与 PROCESS_END 之间
while()
{
static struct etimer et;
etimer_set(&et, CLOCK_SECOND/);
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et)); led_on();
printf("LED0 ----ON-----\r\n"); led_off();
printf("LED1 -----OFF-----\r\n"); etimer_set(&et, CLOCK_SECOND/);
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et)); led_off();
printf("LED0 -----OFF-----\r\n");
led_on();
printf("LED1 ----ON-----\r\n"); }
PROCESS_END();//宏用于辅助保存断点信息 (即行数 )
}
然后在main函数中:
int main()
{ BoardInit();
DEBUG("BoardInit Done!");
printf("Initialising\r\n");
clock_init();//时钟初始化
process_init();//进程初始化 process_start(&etimer_process, NULL);//启动系统进程
autostart_start(autostart_processes);//启动用户自启动进程
printf("Processes running\r\n");
while() {
do
{
}
while(process_run() > );
idle_count++;
}
}
参考博客:http://blog.csdn.net/ferlansue/article/details/7256964
contiki-main.c 文件的进程分析的更多相关文章
- linux用户进程分析
经过实验3的介绍.我们须要来点实在的.所以将我们理解的流程用于linux系统的分析.换句话说.通过类比的方式去进行描写叙述与理解linux相关的部分. 本节的内容非常详实.并且也分析 ...
- 鸿蒙内核源码分析(ELF格式篇) | 应用程序入口并不是main | 百篇博客分析OpenHarmony源码 | v51.04
百篇博客系列篇.本篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | 应用程序入口并不是main | 51.c.h.o 加载运行相关篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | ...
- v87.01 鸿蒙内核源码分析 (内核启动篇) | 从汇编到 main () | 百篇博客分析 OpenHarmony 源码
本篇关键词:内核重定位.MMU.SVC栈.热启动.内核映射表 内核汇编相关篇为: v74.01 鸿蒙内核源码分析(编码方式) | 机器指令是如何编码的 v75.03 鸿蒙内核源码分析(汇编基础) | ...
- Dump 文件生成与分析
近期两天因为项目的须要,研究了一下Dump文件相关的知识,今天做一个小节(因为研究不久而且第一次写blog,希望网友们看到不要见笑). Dump文件是进程的内存镜像.能够把程序的运行状态通过调试器保存 ...
- ORA-03113: 通信通道的文件结尾 进程 ID: 764 会话 ID: 125 序列号: 5
昨天因为导入很久数据,最后一看是因为数据文件不够,后来就关机了.现在,开启数据库,总是报“ORA-03113: 通信通道的文件结尾” SQL> conn /as sysdba; 已连接到空闲例程 ...
- mysql死锁-查询锁表进程-分析锁表原因【转】
查询锁表进程: 1.查询是否锁表 show OPEN TABLES where In_use > 0; 2.查询进程 show processlist 查询到相对应的进程===然 ...
- 进程分析之CPU
进程分析之CPU 进程分析之CPU 本文转载自:https://github.com/ColZer/DigAndBuried/blob/master/system/cpu.md 在<进程分析之内 ...
- Keil开发的ARM程序main函数之前的汇编分析
Keil开发的ARM程序main函数之前的汇编分析 ——BIN文件中RW段的数据移动 系统平台: STM32系列STM32F103ZE,512KB内部FLASH,64KB片内存储; FLASH地址范围 ...
- Windows下获取Dump文件以及进程下各线程调用栈的方法总结(转)
1. Dump文件的用途 Dump文件, 主要用于诊断一个进程的运行状态,尤其是碰到崩溃(Crash)或者挂起(hang)不响应时,需要分析它的工作状态. 除了平时常见的attach到这个进程, 分 ...
随机推荐
- java API 知识:截取特殊标识之前的字符串
一: double a = 23.36; String b = String.valueOf(a); String d = b.substring(, b.lastIndexOf(".&qu ...
- jQuery ajax 返回的数据类型
请求数据的接口信息如下 当我们打印出返回的数据与数据节点时,我们发现数据节点显示为undefind 查看一下我们的代码 $.ajax({ type: "Post", url: &q ...
- FP - growth 发现频繁项集
FP - growth是一种比Apriori更高效的发现频繁项集的方法.FP是frequent pattern的简称,即常在一块儿出现的元素项的集合的模型.通过将数据集存储在一个特定的FP树上,然后发 ...
- memcache的windows下的安装和简单使用
原文:memcache的windows下的安装和简单使用 memcache是为了解决网站访问量大,数据库压力倍增的解决方案之一,由于其简单实用,很多站点现在都在使用memcache,但是memcach ...
- 单身狗进化——求n!的位数
题目: 分析: 这道题目要求的是n!的位数,显然一种思路是先求出n!的值,假定为res,然后再计算res的位数,这种方法在n比较小时是可以的,如果res为int型,一旦n>16,res就会超出i ...
- Python开发【第二章】:Python模块和运算符
一.模块初识: Python有大量的模块,从而使得开发Python程序非常简洁.类库有包括三中: Python内部提供的模块 业内开源的模块 程序员自己开发的模块 1.Python内部提供一个 sys ...
- js日期字符串增加天数的函数
//日期加天数的方法 //dataStr日期字符串 //dayCount 要增加的天数 //return 增加n天后的日期字符串 function dateAddDays(dataStr,dayCou ...
- Objective-C Block
OC中block的语法实在是太别扭了,不知道是不是我太孤陋寡闻了...在此记录一下,以供日后查找使用. 引用:http://goshdarnblocksyntax.com As a local var ...
- Number类型方法
//1.toString(); 转换成字符串 var s=123; console.log(typeof s.toString()); //string //2.toLocaleString() ...
- 厦门BRT 硬币型非接触式IC卡分析
前几天去厦门玩顺便多买了一张BRT的票 也就是如图所示的这种硬币型非接触式IC卡 回来之后用Proxmark3分析了卡内数据得到如下16进制dump内容 UID.发卡日期时间. 最近好懒 懒得写了 有 ...