00001 #ifndef OSTASK_H 00002 #define OSTASK_H 00003 00004 #define OS_TASK_FREE 0 00005 #define OS_TASK_READY 1 00006 #define OS_TASK_PENDING 2 00007 #define OS_TASK_SUSPEND 3 00008 #define OS_TASK_EXECUTION 4 00009 00010 #define OS_TOTAL_TASK_NUMBER 10 00011 #define OS_TASK_PRIORITY_MAX 10 00012 typedef struct{ 00013 U8 Status; 00014 U8 FreeTaskNumber; 00015 OS_TASKENTRY *FreeList; 00016 U8 ReadyListTaskNumber[OS_TASK_PRIORITY_MAX]; 00017 OS_TASKENTRY *ReadyListHead[OS_TASK_PRIORITY_MAX]; 00018 OS_TASKENTRY *ReadyListTail[OS_TASK_PRIORITY_MAX]; 00019 }OS_TASK_CONTROL; 00020 00021 extern OS_TASKENTRY *TaskFreeList; 00022 extern OS_TASKENTRY *TaskSuspendList; 00023 extern OS_TASK_CONTROL OsTaskCtrl; 00024 00025 void OsTaskInit(void); 00026 bool OsTaskCreat(void (*pTask)(void),OS_STACK* pStack,U8* pTaskName,U8 Priority); 00027 OS_TASKENTRY *OsTaskFreeTaskGet(void); 00028 void OsTaskFreeTaskPut(OS_TASKENTRY *pOsTcb); 00029 U8 OsTaskReadyListCheck(U8 Priority); 00030 void OsTaskReadyTaskPut(OS_TASKENTRY *pOsTcb); 00031 OS_TASKENTRY *OsTaskReadyTaskGet(U8 Priority); 00032 OS_BOOL OsTaskReadyTaskDelete(U8 *pTaskName); 00033 OS_STACK* OsTaskStackInit(void (*Task)(void),OS_STACK *pStack); 00034 void OsTaskFinish(void); 00035 00036 #endif
1.5.9