00001 #ifndef OS_CPU_H 00002 #define OS_CPU_H 00003 00004 typedef INT8U OS_STACK; 00005 extern idata unsigned char OsCpuStack[1]; // idata...access Stack ram must use indirect ram access 00006 // OsCpuStack itself is value of cpu stack 00007 //extern INT8U xdata * data OsCpuStackPointer; // I can't see it work right 00008 //extern INT8U xdata * data OsCpuStackPointer2; // I can't see it work right 00009 00010 //extern INT16U data OsCpuStackPointer; // pointer in data point to xdata...tells compiler the way to pass parameters 00011 //extern INT16U data OsCpuStackPointer2; // pointer in data point to xdata...tells compiler the way to pass parameters 00012 extern INT16U data OSTCBCur; // current task control block 00013 extern INT16U data OSTCBHighRdy; // next task ready for execution 00014 extern INT8U data OSPrioCur; // current task id 00015 extern INT8U data OSPrioHighRdy; // next task id 00016 00017 // 3bytes...memory type, address high, address low. 00018 extern void OsCpuLoadContext(void); // load task context to 8051 stack 00019 extern void OsCpuContextSwitch(void); // restore 8051 stack to task stack,and then load 00020 extern void OsCpuContextSwitchIsr(void); // OsCpuContextSwitchIsr 00021 extern OS_STACK *OsTaskStackInit(void (*Task)(void),OS_STACK *ptos) LargeReentrant; 00022 00023 #endif