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;

  由于所有的进程存放与一个链表之中,所以每个进程都会存在指向下一个进程的指针

2.const char *name;

  表示进程的名字,3-8行,当定义了全局变量PROCESS_CONF_NO_PROCESS_NAMES时,表示进程没有名字,可能为某些特殊的CPU准备的。

  我们就当所有进程都会有名字。#define PROCESS_NAME_STRING(process) (process)->name使用宏定义了一个方法,它的作用是返回此结构体的name成员。

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类型,一个参数为结构体pt类型的指针,一个参数为process_event_t,表示一个事件,typedef unsigned char process_event_t;实际上是无符号字符类型,1个字节。一个参数为process_data_t,是一个无类型的指针,指向数据,typedef void *   process_data_t;
4. struct pt pt;
struct pt {
lc_t lc;
};

  变量名和结构体名相同,虽然是合法的,但是看起来好别扭,不知道这么用的用意何在。

  lc_t是什么?追踪到typedef unsigned short lc_t;,一个无符号short整形,一个数字。

5.unsigned char state

  表示进程的状态,三个数字:0,1,2,取下面三个值:

#define PROCESS_STATE_NONE        0
#define PROCESS_STATE_RUNNING 1
#define PROCESS_STATE_CALLED 2

6.unsigned char needspoll;

  表示进程的优先级;

摘录自:http://www.cnblogs.com/abatei/p/5137009.html

contiki-process结构体的更多相关文章

  1. contiki学习笔记---process结构体

    process,字面意义,进程,看看它的结构 struct process { struct process *next; #if PROCESS_CONF_NO_PROCESS_NAMES #def ...

  2. Contiki Process概述

    本文涉及到的Protothread机制知识,在http://www.cnblogs.com/songdechiu/p/5793717.html 一.进程类型 进程类型主要有协同式(cooperativ ...

  3. C++_系列自学课程_第_12_课_结构体

    #include <iostream> #include <string> using namespace std; struct CDAccount { double bal ...

  4. Linux_Struct file()结构体

    struct file结构体定义在/linux/include/linux/fs.h(Linux 2.6.11内核)中,其原型是:struct file {        /*         * f ...

  5. Linux--struct file结构体

    struct file(file结构体): struct file结构体定义在include/linux/fs.h中定义.文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的  ...

  6. Linux进程管理之task_struct结构体

    进程是处于执行期的程序以及它所管理的资源(如打开的文件.挂起的信号.进程状态.地址空间等等)的总称.注意,程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序,而且还有可能共享地址空间等资源. ...

  7. 使用offsetof对结构体指针偏移操作

    题目来自于COMP20003 Tutorial 2: Program m ing Challenge 2.2 The technology stack at Hidebound Inc. uses a ...

  8. Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)【转】

    Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息.它定义在include/linux/sched.h文件中. 谈到task_str ...

  9. 用C结构体来实现面向对象编程,ti xDAIS标准算法就这么搞的(1)

    用C结构体来实现面向对象编程,ti xDAIS标准算法就这么搞的. 测试代码如下: #include <stdio.h> #include <stdlib.h> #includ ...

随机推荐

  1. 移动端 iframe的使用

    对于iframe的设定有几个css属性常用 overflow:hidden;width:100%;当这样使用inframe内部中使用overflow,iframe会被撑开,导致width与overfl ...

  2. Android: 解决ADB server didn't ACK

    分析: 1         打开命令行工具, 运行adb start-server 启动服务,报错ADB server didn't ACK, 并且根据错误信息可以得到服务绑定的端口是5037,极有可 ...

  3. python的应该关注的语法

    1.try...finally def test_return(): try: print "try" raise ValueError("valueError" ...

  4. Java数据结构之字符串模式匹配算法---Brute-Force算法

    模式匹配 在字符串匹配问题中,我们期待察看源串 " S串 " 中是否含有目标串 " 串T " (也叫模式串).其中 串S被称为主串,串T被称为子串. 1.如果在 ...

  5. Graphics平移缩放旋转(转载)+点睛

    点睛:可以进行多次旋转和平移,也就是平移以后再平移,旋转以后再旋转,有时候一次达不到要求,如果你想一次调整完美的话很麻烦,所以最好多次,上代码 private void btnTranslate_Cl ...

  6. CURL命令详解

    curl命令是一个强大的网络工具,它能通过http,ftp等方式下载.上传文件.其中curl远不止这些功能,大家可以通过阅读手册获取更多的信息,类似的工具还有wget. curl命令使用了libcur ...

  7. 在mac电脑上创建java的一些简单操作

    首先你要在电脑上下载一个JDK创造出一个java环境 如下第二个: 然后步奏如下: step1:苹果->系统偏好设置->最下边点MySQL 在弹出页面中 关闭mysql服务(点击stop ...

  8. android源码中,在系统多媒体数据库中增加一个字段

    由于项目需求,在系统多媒体管理数据库里的存储图像文件的表中需要新增加一个字段,源码在:项目\packages\providers\MediaProvider\MediaProvider.java下,在 ...

  9. location对象说明

    在浏览器的console层输入 location 即可输出该对象的相关信息 location.protocol   协议类型  http/https location.hostname 主机名 loc ...

  10. mysqli链接数据库:面向对象

    $mysqli = new mysqli('localhost','root','123','test');//检查连接是否成功if (mysqli_connect_error()){ //注意mys ...