process,字面意义,进程,看看它的结构

 struct process {
struct process *next;
#if PROCESS_CONF_NO_PROCESS_NAMES
#define PROCESS_NAME_STRING(process) ""
#else
const char *name;
#define PROCESS_NAME_STRING(process) (process)->name
#endif
PT_THREAD((* thread)(struct pt *, process_event_t, process_data_t));
struct pt pt;
unsigned char state, needspoll;
};

process表示一个进程,它是一个结构体:

1、struct process *next;  
    第一个成员*next,类型为自己,名字起为next,明显是为链表准备的,表示所有进程会存放于一个链表之中。
2、const char *name;
    这个表示进程的名称,3~8行,当全局变量PROCESS_CONF_NO_PROCESS_NAMES时名字为空,表示进程没名字,这应该是为某些特殊CPU准备的,直接忽略吧,我们就当所有进程都会有名字。
    #define PROCESS_NAME_STRING(process) (process)->name 使用宏定义了一个方法  PROCESS_NAME_STRING(),它的作用就是返回此结构体的name成员。这个实现方式挺有意思,跟C#是完全不同的两种精神世界,以后要多多适应。
3、PT_THREAD((* thread)(struct pt *, process_event_t, process_data_t));
    PT_THREAD在Pt.h头文件中,定义如下:
    #define PT_THREAD(name_args) char name_args
    将整句代码代入宏定义中,展开如下:
    char  (* thread)(struct pt *, process_event_t, process_data_t)
    thread是一个函数指针,指向的是一个含有3个参数,返回值为char类型的函数。这个函数是做什么的呢?稍后研究。
4、struct pt pt;
    变量名和结构体名相同,C语言果然不一样啊,不过这变量名只在结构体内有效。先看看结构体pt的定义吧,还是在Pt.h头文件中。
  struct pt {
lc_t lc;
};
 lc_t是什么?继续追踪,Lc-switch.h头文件中
    typedef unsigned short lc_t;
    unsigned short类型,只是一个数字,一个标识。为何pt结构体只有一个成员,这样做的意义何在?后面搞清楚了再回来改吧。
5、unsigned char state;
    这个表示进程的状态,三个数字:0、1、2。有宏定义,在Process.c文件中
#define PROCESS_STATE_NONE           0
#define PROCESS_STATE_RUNNING 1
#define PROCESS_STATE_CALLED 2
这三种状态只有到时碰到用的时候再回来讲解吧,现在只能放着。
6、unsigned char needspoll;
    表示进程优先级,后面用到再研究吧。

contiki学习笔记---process结构体的更多相关文章

  1. C#学习笔记之结构体

    1.概述 结构是一种与类相似的数据类型,不过它较类更为轻量,一般适用于表示类似Point.Rectangle.Color的对象.基本上结构能办到的类全都能办到,但在某些情况下使用结构更为合适,后面会有 ...

  2. 《PHP7底层设计与源码实现》学习笔记2——结构体对齐

    书里给了一段代码,假如有个结构体如下: struct test {     char a;     int b;     long c;     void* d;     int e;     cha ...

  3. c语言学习笔记之结构体存储

    今天讲讲结构体存储问题 首先,结构体简单说是对不同类型的封装,一开始我们可能会想结构体在内存中的存储的大小是直接元素的和 例如 我们可能会觉得是 结构体大小=int(4个字节)+ short(2个字节 ...

  4. C语言学习笔记--枚举&结构体

    枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明: enum 枚举类型名字 {名字0,名字1,...,名字n}: 枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为 ...

  5. 【C#学习笔记】结构体使用

    using System; namespace ConsoleApplication { struct _st { public string name; public int age; } clas ...

  6. Contiki学习笔记  第一个程序:Hello World

    想来想去,还是得先写一个程序,找下感觉,增强一下自信心,那就国际惯例Hello World吧.先到这个网址下一个Instant Contiki 2.7.之所以没用3.0的,是因为有些问题,我源码是下的 ...

  7. 简单的玩玩etimer <contiki学习笔记之九 补充>

    这幅图片是对前面  <<contiki学习笔记之九>>  的一个补充说明. 简单的玩玩etimer <contiki学习笔记之九> 或许,自己正在掀开contiki ...

  8. 简单的玩玩etimer <contiki学习笔记之九>

    好吧,我承认etimer有点小复杂,主要是它似乎和contiki的process搅在一起,到处都在call_process.那就先搜搜contiki下的etimer的example看看,然后再试着写一 ...

  9. Go学习笔记07-结构体与方法

    Go学习笔记07-结构体与方法 Go语言 面向对象 结构的定义与创建 面向对象 Go语言只支持封装,不支持继承和多态. Go语言中只有struct,即结构体:没有class. 结构的定义与创建 pac ...

随机推荐

  1. Python开发入门与实战22-简单消息回复

    22. 简单消息回复 本章节我们来实现一个微信库存查询功能,使用我们前面的BIZ业务逻辑层示例如何利用微信入口来实现文本消息类的库存查询服务. 22.1. 在responseMsg函数里增加处理微信文 ...

  2. css position static | absolute | fixed | relative

    <div id="bigbox1">    <div id="box1" class="box">box1</ ...

  3. PKu 2195

    //PKu 2195 回家 By Loli_con Enail : Loli_con@outlook.com /* 题目叙述 ========= 在一个网格图中,有n个人和n个房子.每一个单位时间,每 ...

  4. RSA_SHA256数字签名

    ------------------ rsa 加密与解密 ----------------------------- 数论知识的实际应用: rsa加密 把问题归结为对数字的加密. 被加密的数字为明文. ...

  5. 哈希(Hash)与加密(Encrypt)相关内容

    1.哈希(Hash)与加密(Encrypt)的区别 哈希(Hash)是将目标文本转换成具有相同长度的.不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的.可 ...

  6. HTML标签整理

    第一次接触动态网站的相关代码,对程序里HTML的标签不理解.在这里会把碰到的HTML标签整理出来,持续更新. 1.<form></form>:用于声明表单,定义采集数据的范围, ...

  7. android Intent的常用flags

    首先,我们常见的由MainActivity跳转到另外一个Main1Acticity的代码: Intent mIntent=new Intent(MainActivity.this, Main1Acti ...

  8. hash连接

    简单回顾嵌套循环: 两个表关联,较小的表(指使用了过滤条件后结果集较小的表)称为驱动表或者外表(,另一个称为内表.在嵌套连接过程中,oracle首先读取驱动表的第一条数据,然后和内表进行比对,所以匹配 ...

  9. MySql数据库忘记root密码

    以windows为例: 1. 关闭正在运行的MySQL服务.(services.msc运行停止服务) 2. 打开DOS窗口,转到mysql\bin目录.(输入cd..返回到c盘根目录下,一般MySQL ...

  10. intent打开第三方应用

    有时候我们会有在自己的应用中进入另一个第三方应用的需求,首先要知道第三方应用的包名和主activity,很简单遍历一下所有的应用就能拿到了. private void go2App(String pa ...