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. sql语句修改字段长度

    sql语句修改字段长度 alter table <表名> alter column <字段名> 新类型名(长度) 例: alter table students alter c ...

  2. 如何设置ASP.NET页面的运行超时时间 (转载)

    全局超时时间 服务器上如果有多个网站,希望统一设置一下超时时间,则需要设置 Machine.config 文件中的 ExecutionTimeout 属性值. Machine.config 文件位于 ...

  3. C# interface abstract class

  4. Windows Azure Virtual Machine 之用程序控制Azure VM

    我们在很多时候可能会需要用程序来控制VM的创建,删除工作. 而在这些工作之中,用程序创建一个VM将会是一个非常复杂的过程,因为他涉及到很多步骤. 具体步骤如下 1 创建一个Hosted cloud s ...

  5. Qt Creator pro 文件 导入vs2013碰到的问题

    显示error LNK1117:sytax error in option... 解决办法 从Properties --> Linker --> Command Line 中删掉Addit ...

  6. Weblogic的安装与配置

    安装准备  下载WebLogic10.2 for x86 linux安装文件: 安装RHEL 5.4: 检查Linux环境,确保安装目录所在的文件系统空闲空间在2G以上.如果空间不足,则应扩展root ...

  7. MD5 Checksums for R12.1.1 Rapid Install Media (文档 ID 802195.1)

    Oracle EBusiness Suite R12.1.x Rapid Installmd5 Checksums November 2011 Section      1: Overview Sec ...

  8. 应用ERP系统与企业的关系

      随着ERP系统的深入发展,越来越多的企业开始实施ERP,ERP实施是借用一种新的管理模式来改造原企业旧的管理模式,是先进的.行之有效的管理思想和方法.ERP软件在实际的推广应用中,其应用深度和广度 ...

  9. QM模块包含主数据(Master data)和功能(functions)

    QM模块包含主数据(Master data)和功能(functions)   QM主数据   QM主数据 1 Material   Master MM01/MM02/MM50待测 物料主数据 2 Sa ...

  10. nginx :413 Request Entity Too Large

    nginx出现这个问题的原因是请求实体太长了.一般出现种情况是Post请求时Body内容Post的数据太大了, 如上传大文件过大.POST数据比较多. 处理方法 在nginx.conf增加 clien ...