00001 #ifndef OS_DEFINE_H 00002 #define OS_DEFINE_H 00003 00004 /****** 00005 *prototype definition used in operation system 00006 *******/ 00007 typedef U32 OS_STACK; 00008 typedef U32 OS_ERROR; 00009 //typedef void(*pOS_TASK)(void); //task pointer 00010 typedef void(OS_TASK)(void); //task prototype 00011 00012 #define OS_BOOL U8 00013 00014 #define OS_TRUE 1 00015 #define OS_FALSE 0 00016 00017 #define OS_NULL 0 00018 /****** 00019 * os error definition 00020 *******/ 00021 #define OS_NO_ERROR 0 00022 #define OS_IS_ERROR 1 00023 #define OS_ERROR_TIMEOUT 2 00024 #define OS_ERROR_NULL_POINTER 3 00025 #define OS_ERROR_EVENT_TYPE 4 00026 00027 #define OS_PENDING_NONE 0 00028 #define OS_PENDING_TIME 1 00029 #define OS_PENDING_RESOURCE 2 00030 #define OS_PENDING_EVENT 3 00031 00032 #define OS_NAME_STRING_MAX 16 00033 /****** 00034 * task switch setting 00035 *******/ 00036 #define OS_INT_LEVEL_CSW_ENABLE 1 00037 00038 #define OS_TASK_SWITCH_TIME 1 // ticks 00039 // os time enable 00040 #define OS_TIME_EVENT_ENABLE 1 // default support...no disable it 00041 /****** 00042 * os event control definition 00043 *******/ 00044 #define OS_EVENT_TIME 0 00045 #define OS_EVENT_KEYBOARD 1 00046 #define OS_EVENT_UART1 2 00047 #define OS_EVENT_UART2 3 00048 #define OS_EVENT_RTC 4 00049 typedef struct os_event{ 00050 U8 Name[OS_NAME_STRING_MAX]; //event name 00051 U32 Type; 00052 U32 *ListHead; // task pending for this event or resource 00053 U32 *ListTail; // task pending for this event or resource 00054 U32 EntryNumber; // task number in list 00055 struct os_event *Prev; // event link list 00056 struct os_event *Next; // event link list 00057 }OS_EVENT; 00058 /****** 00059 * os resource control definition 00060 *******/ 00061 #define OS_RESOURCE_GUI 1 00062 typedef struct os_resource{ 00063 U8 Name[OS_NAME_STRING_MAX]; //event name 00064 U8 InUse; // in use or not 00065 U32 *pUser; // pointer to user task that use this resource 00066 U32 Type; 00067 U32 *ListHead; // task pending for this event or resource 00068 U32 *ListTail; // task pending for this event or resource 00069 U32 EntryNumber; // task number in list 00070 struct os_event *Prev; // event link list 00071 struct os_event *Next; // event link list 00072 }OS_RESOURCE; 00073 /****** 00074 * os task control block definition 00075 *******/ 00076 typedef struct os_taskentry{ 00077 OS_STACK* pStack; 00078 U8 Id; 00079 OS_TASK* pTask; 00080 U8 Status; 00081 U8 Priority; 00082 U8 WeightedPriority; 00083 U8 PendingType; 00084 U16 TimeDelay; //65535*1ms=65.535sec...long enough 00085 U8 Name[OS_NAME_STRING_MAX]; //task name 00086 //OS_EVENT* pEvent; //event that task waits for...reserve for furture use 00087 //OS_MCB Message; //message received...reserve for furture use 00088 //OS_FCB Flag; //flag task concern ...reserve for furture use 00089 struct os_taskentry *Prev; 00090 struct os_taskentry *Next; 00091 }OS_TASKENTRY; 00092 00093 /****** 00094 * critical section definitions 00095 *******/ 00096 #define OS_CRITICAL_METHOD 3 00097 00098 #if(OS_CRITICAL_METHOD==1) 00099 #define OsEnterCritical() __asm__ __volatile__("cli") 00100 #define OsExitCritical() __asm__ __volatile__("sti") 00101 #elif(OS_CRITICAL_METHOD==2) 00102 #define OsEnterCritical() __asm__ __volatile__("pushf;cli") 00103 #define OsExitCritical() __asm__ __volatile__("popf") 00104 #elif(OS_CRITICAL_METHOD==3) 00105 #define OsEnterCritical() CpuEflags=OsLibEnterCritical() 00106 #define OsExitCritical() OsLibExitCritical(CpuEflags) 00107 #else 00108 #define OsEnterCritical() __asm__ __volatile__("cli") 00109 #define OsExitCritical() __asm__ __volatile__("sti") 00110 #endif 00111 00112 00113 00114 #endif 00115
1.5.9