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));
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