contiki-process结构体

 1 struct process {
 2   struct process *next;
 3 #if PROCESS_CONF_NO_PROCESS_NAMES
 4 #define PROCESS_NAME_STRING(process) ""
 5 #else
 6   const char *name;
 7 #define PROCESS_NAME_STRING(process) (process)->name
 8 #endif
 9   PT_THREAD((* thread)(struct pt *, process_event_t, process_data_t));
10   struct pt pt;
11   unsigned char state, needspoll;
12 };

  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

posted @ 2016-11-24 22:45  一只奋斗的考拉  阅读(390)  评论(0编辑  收藏  举报