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
本文来自博客园,作者:一只奋斗的考拉,转载请注明原文链接:https://www.cnblogs.com/liu13526825661/p/6099841.html