作者在 2010-09-01 00:40:23 发布以下内容
#include"config.h"
#ifndef __OS_H_H_H_H_
#define __OS_H_H_H_H_
/*--0---1---2---3---4---5---6---7--*/
//内核管理控制块的结构定义
typedef struct OSCB{
PCB*pcur; //指向当前运行的进程控制块的指针;
PCB*pfirst; //指向第一个进程控制块的指针;
PCB*plast; //指向最后一个进程控制块的指针;
INT16U _int_nest; //中断嵌套层次;
PSTK**pstktlb; //指向进程指针数组的指针;
_OS_PRDYTLB*pprdytlb; //指向进程就绪表的指针;
PID highpriorpid; //处于高优先度的pid
}_OS_OSCB;
//进程管理控制块的结构定义
typedef struct PCB{
PSTK *pstk; //进程堆栈指针
PID pid; //进程号;
PPC *ppc; //进程PC指针(只是指向代码开始位置)
PCB *pfather; //父进程进程快指针;
PSTA state; //进程状态;
//PCB *pback; //指向下一个pcb块
//PCB *pfront; //指向前一个pcb块
//OSCB *oscb; //指向内核控制块的指针;
#if P_NAME_EN ==1
PNAME*pname; //指向进程名的数据结构的指针;
#endif
#if MEMORY_EN==1
MCB*pmcb; //指向内存管理控制块的指针;
#endif
#if SEMAPHORE_EN==1
SCB*pscb; //指向信号量管理控制块的指针;
#endif
#if EVENT_EN==1
ECB*pecb; //指向事件管理控制块的指针;
#endif
} _OS_PCB;
//OS全局变量总集
_OS_OSCB _os_oscb;//内核控制块;
_OS_PCB _os_pcb[OS_REALITY_PROCESS_COUNT+2];//创建进程控制块的数组,由于有两个系统进程所以要加2;
_OS_PRDYTLBINDEX _os_prdytlbindex; //进程就绪表索引数值,此处是一个无符号整型变量;
//进程就绪表索引数值,是一个具有256个元素的数组;
const _OS_PRDYTLB _os_prdytlb[256]={
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 7,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4,
0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 0
};
#endif
os.h文件,未完待续