声明:通过分析源代码,得到了如下的函数结构,如有错误,望大家指正,希望与有兴趣者共同交流进步。
//任务就绪列表,在求最高优先级时要用到这两个数组。
INT8U const OSMapTbl[]
INT8U const OSUnMapTbl[]
//前面是函数声明,后面还给出了函数的具体实现功能
//初始化事件列表,开始时全是空值。
static void OS_InitEventList(void);
//给全局变量赋值
static void OS_InitMisc(void);
//就绪列表的初始化
static void OS_InitRdyList(void);
//空闲任务的初始化
static void OS_InitTaskIdle(void);
//初始化统计任务
static void OS_InitTaskStat(void);
//任务控制块的初始化
static void OS_InitTCBList(void);
void OSInit (void){
OSInitHookBegin();
OS_InitMisc();
OS_InitRdyList();
OS_InitTCBList();
OS_InitEventList();
OS_FlagInit();
OS_MemInit();
OS_QInit();
OS_InitTaskIdle();
OS_InitTaskStat();
OSInitHookEnd();
}
//开中断
void OSIntEnter (void)
//关中断
void OSIntExit (void){
OSIntCtxSw();
}
//调度器上锁
void OSSchedLock (void)
//调度器开锁
void OSSchedUnlock (void)
//通过这个函数,开始多任务
void OSStart (void)
//统计任务的初始化
void OSStatInit (void)
//时钟节拍
void OSTimeTick (void)
//版本函数
INT16U OSVersion (void)
//此函数什么也不做
void OS_Dummy (void)
//使一个正在等待任务进入就绪状态
INT8U OS_EventTaskRdy (OS_EVENT *pevent, void *msg, INT8U msk)
//使一个任务进入等待状态
void OS_EventTaskWait (OS_EVENT *pevent)
//使一个等待超时的任务进入就绪状态
void OS_EventTO (OS_EVENT *pevent)
//初始化时间等待列表
void OS_EventWaitListInit()
//事件控制块的初始化函数
static void OS_InitEventList (void)
//调度器
void OS_Sched (void)
//空闲任务
void OS_TaskIdle (void *pdata)
//统计任务
void OS_TaskStat (void *pdata)
//控制块的初始化
INT8U OS_TCBInit (INT8U prio, OS_STK *ptos, OS_STK *pbos,
INT16U id, INT32U stk_size, void *pext, INT16U opt)
阅读(2343) | 评论(0) | 转发(0) |