/* ********************************************************************************************************* * uC/OS-II * The Real-Time Kernel * * (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL * All Rights Reserved * * V2.00 * * File : uCOS_II.H * By : Jean J. Labrosse ********************************************************************************************************* */ /* ********************************************************************************************************* * ±âŸ ¼³Á¤ ********************************************************************************************************* */ #define OS_VERSION 200 /* uC/OS-II ¹öÀü (Vx.yy¿¡ 100À» °öÇÑ °ªÀÌ´Ù) */ #ifdef OS_GLOBALS #define OS_EXT #else #define OS_EXT extern #endif #define OS_PRIO_SELF 0xFF /* ÀÚ½ÅÀÇ ¿ì¼±¼øÀ§¸¦ ³ªÅ¸³½´Ù */ #if OS_TASK_STAT_EN #define OS_N_SYS_TASKS 2 /* ½Ã½ºÅÛ Å½ºÅ© ¼ö */ #else #define OS_N_SYS_TASKS 1 #endif #define OS_STAT_PRIO (OS_LOWEST_PRIO - 1) /* Åë°è ŽºÅ© ¿ì¼±¼øÀ§ */ #define OS_IDLE_PRIO (OS_LOWEST_PRIO) /* IDLE ŽºÅ© ¿ì¼±¼øÀ§ */ #define OS_EVENT_TBL_SIZE ((OS_LOWEST_PRIO) / 8 + 1) /* À̺¥Æ® Å×À̺í Å©±â */ #define OS_RDY_TBL_SIZE ((OS_LOWEST_PRIO) / 8 + 1) /* Áغñ Å×À̺í Å©±â */ #define OS_TASK_IDLE_ID 65535 /* idle ŽºÅ©¿Í Åë°è ŽºÅ©ÀÇ ID */ #define OS_TASK_STAT_ID 65534 /* ŽºÅ© »óÅÂ(OSTCBStat¿¡¼ÀÇ ºñÆ® Á¤ÀÇ) */ #define OS_STAT_RDY 0x00 /* ½ÇÇà Áغñ»óÅ */ #define OS_STAT_SEM 0x01 /* ¼¼¸¶Æ÷¾î ´ë±â»óÅ */ #define OS_STAT_MBOX 0x02 /* ¸ÞÀϹڽº ´ë±â»óÅ */ #define OS_STAT_Q 0x04 /* Å¥ ´ë±â»óÅ */ #define OS_STAT_SUSPEND 0x08 /* ÀϽà Áß´Ü»óÅÂ(suspended) */ #define OS_EVENT_TYPE_MBOX 1 #define OS_EVENT_TYPE_Q 2 #define OS_EVENT_TYPE_SEM 3 /* ŽºÅ© ¿É¼Ç(OSTaskCreateExt() ÂüÁ¶) */ #define OS_TASK_OPT_STK_CHK 0x0001 /* ŽºÅ© ½ºÅà °Ë»ç ±â´É Ȱ¼ºÈ */ #define OS_TASK_OPT_STK_CLR 0x0002 /* ŽºÅ© »ý¼º½Ã ½ºÅà ¿µ¿ªÀ» 0À¸·Î Áö¿ì´Â ¿É¼Ç */ #define OS_TASK_OPT_SAVE_FP 0x0004 /* ºÎµ¿¼Ò¼ö ¿¬»ê ·¹Áö½ºÅÍ ³»¿ë ÀúÀå ¿É¼Ç */ #ifndef FALSE #define FALSE 0 #endif #ifndef TRUE #define TRUE 1 #endif /* ********************************************************************************************************* * ¿¡·¯ÄÚµå ********************************************************************************************************* */ #define OS_NO_ERR 0 #define OS_ERR_EVENT_TYPE 1 #define OS_ERR_PEND_ISR 2 #define OS_TIMEOUT 10 #define OS_TASK_NOT_EXIST 11 #define OS_MBOX_FULL 20 #define OS_Q_FULL 30 #define OS_PRIO_EXIST 40 #define OS_PRIO_ERR 41 #define OS_PRIO_INVALID 42 #define OS_SEM_OVF 50 #define OS_TASK_DEL_ERR 60 #define OS_TASK_DEL_IDLE 61 #define OS_TASK_DEL_REQ 62 #define OS_TASK_DEL_ISR 63 #define OS_NO_MORE_TCB 70 #define OS_TIME_NOT_DLY 80 #define OS_TIME_INVALID_MINUTES 81 #define OS_TIME_INVALID_SECONDS 82 #define OS_TIME_INVALID_MILLI 83 #define OS_TIME_ZERO_DLY 84 #define OS_TASK_SUSPEND_PRIO 90 #define OS_TASK_SUSPEND_IDLE 91 #define OS_TASK_RESUME_PRIO 100 #define OS_TASK_NOT_SUSPENDED 101 #define OS_MEM_INVALID_PART 110 #define OS_MEM_INVALID_BLKS 111 #define OS_MEM_INVALID_SIZE 112 #define OS_MEM_NO_FREE_BLKS 113 #define OS_MEM_FULL 114 #define OS_TASK_OPT_ERR 130 /*$PAGE*/ /* ********************************************************************************************************* * À̺¥Æ® ÄÁÆ®·Ñ ºí·Ï ********************************************************************************************************* */ #if (OS_MAX_EVENTS >= 2) typedef struct { void *OSEventPtr; /* ¸Þ½ÃÁö³ª Å¥¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; /* À̺¥Æ® ´ë±â ÁßÀΠŽºÅ© ¸ñ·Ï */ INT16U OSEventCnt; /* ¼¼¸¶Æ÷¾îÀÎ °æ¿ì »ç¿ëÇÏ´Â Ä«¿îÅÍ */ INT8U OSEventType; /* OS_EVENT_TYPE_MBOX, OS_EVENT_TYPE_Q, OS_EVENT_TYPE_SEM */ INT8U OSEventGrp; /* À̺¥Æ® ¹ß»ýÀ» ±â´Ù¸®´Â ŽºÅ©ÀÇ ÇØ´ç ±×·ì */ } OS_EVENT; #endif /*$PAGE*/ /* ********************************************************************************************************* * ¸Þ½ÃÁö ¸ÞÀÏ ¹Ú½º ********************************************************************************************************* */ #if OS_MBOX_EN typedef struct { void *OSMsg; /* ¸ÞÀϹڽºÀÇ ¸Þ½ÃÁö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; /* À̺¥Æ® ´ë±â ÁßÀΠŽºÅ© ¸ñ·Ï */ INT8U OSEventGrp; /* À̺¥Æ® ¹ß»ýÀ» ±â´Ù¸®´Â ŽºÅ©ÀÇ ÇØ´ç ±×·ì */ } OS_MBOX_DATA; #endif /* ********************************************************************************************************* * ¸Þ¸ð¸® ÆÄƼ¼Ç ÀÚ·á ±¸Á¶ ********************************************************************************************************* */ #if OS_MEM_EN && (OS_MAX_MEM_PART >= 2) typedef struct { /* ¸Þ¸ð¸® ÄÁÆ®·Ñ ºí·Ï */ void *OSMemAddr; /* ¸Þ¸ð¸® ÆÄƼ¼ÇÀÇ ½ÃÀÛÀ» °¡¸®Å°´Â Æ÷ÀÎÅÍ */ void *OSMemFreeList; /* ÀÚÀ¯ ¸Þ¸ð¸® ºí·Ï ¸®½ºÆ®¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ INT32U OSMemBlkSize; /* °¢ ¸Þ¸ð¸® ºí·ÏÀÇ ¹ÙÀÌÆ® ´ÜÀ§ Å©±â */ INT32U OSMemNBlks; /* ÀÌ ÆÄƼ¼Ç¿¡¼ÀÇ ÃÑ ¸Þ¸ð¸® ºí·Ï ¼ö */ INT32U OSMemNFree; /* ÀÌ ÆÄƼ¼Ç¿¡ ³²¾ÆÀÖ´Â ÀÚÀ¯ ¸Þ¸ð¸® ºí·Ï ¼ö */ } OS_MEM; typedef struct { void *OSAddr; /* ¸Þ¸ð¸® ÆÄƼ¼ÇÀÇ ½ÃÀÛ ÁÖ¼Ò¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ void *OSFreeList; /* ÀÚÀ¯ ¸Þ¸ð¸® ºí·Ï ¸®½ºÆ®ÀÇ ½ÃÀÛÀ» °¡¸®Å°´Â Æ÷ÀÎÅÍ */ INT32U OSBlkSize; /* °¢ ¸Þ¸ð¸® ºí·ÏÀÇ ¹ÙÀÌÆ® ´ÜÀ§ Å©±â */ INT32U OSNBlks; /* ÆÄƼ¼Ç¿¡¼ÀÇ ÃÑ ¸Þ¸ð¸® ºí·Ï ¼ö */ INT32U OSNFree; /* ÀÚÀ¯ ¸Þ¸ð¸® ºí·Ï ¼ö */ INT32U OSNUsed; /* »ç¿ëÇÑ ¸Þ¸ð¸® ºí·Ï ¼ö */ } OS_MEM_DATA; #endif /*$PAGE*/ /* ********************************************************************************************************* * ¸Þ½ÃÁö Å¥ µ¥ÀÌÅÍ ********************************************************************************************************* */ #if OS_Q_EN typedef struct { void *OSMsg; /* Å¥¿¡¼ ´ÙÀ½¹ø Àо ¸Þ½ÃÁö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ INT16U OSNMsgs; /* ¸Þ½ÃÁö Å¥¾È¿¡ ÀÖ´Â ¸Þ½ÃÁö ¼ö */ INT16U OSQSize; /* ¸Þ½ÃÁö Å¥ÀÇ Å©±â */ INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; /* À̺¥Æ® ´ë±â ÁßÀΠŽºÅ© ¸ñ·Ï */ INT8U OSEventGrp; /* À̺¥Æ® ¹ß»ýÀ» ±â´Ù¸®´Â ŽºÅ©ÀÇ ÇØ´ç ±×·ì */ } OS_Q_DATA; #endif /* ********************************************************************************************************* * ¼¼¸¶Æ÷¾î µ¥ÀÌÅÍ ********************************************************************************************************* */ #if OS_SEM_EN typedef struct { INT16U OSCnt; /* ¼¼¸¶Æ÷¾î Ä«¿îÅÍ */ INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; /* À̺¥Æ® ´ë±â ÁßÀΠŽºÅ© ¸ñ·Ï */ INT8U OSEventGrp; /* À̺¥Æ® ¹ß»ýÀ» ±â´Ù¸®´Â ŽºÅ©ÀÇ ÇØ´ç ±×·ì */ } OS_SEM_DATA; #endif /* ********************************************************************************************************* * ŽºÅ© ½ºÅà µ¥ÀÌÅÍ ********************************************************************************************************* */ #if OS_TASK_CREATE_EXT_EN typedef struct { INT32U OSFree; /* ½ºÅÿ¡¼ »ç¿ëÇÑ ¹ÙÀÌÆ® ¼ö */ INT32U OSUsed; /* ½ºÅÿ¡¼ »ç¿ëÇÏÁö ¾Ê´Â ¹ÙÀÌÆ® ¼ö */ } OS_STK_DATA; #endif /*$PAGE*/ /* ********************************************************************************************************* * ŽºÅ© ÄÁÆ®·Ñ ºí·Ï ********************************************************************************************************* */ typedef struct os_tcb { OS_STK *OSTCBStkPtr; /* ÇöÀç ½ºÅÃÀÇ ÃÖ»óÀ§¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ #if OS_TASK_CREATE_EXT_EN void *OSTCBExtPtr; /* TCB È®ÀåÀ» À§ÇÑ »ç¿ëÀÚ Á¤ÀÇ µ¥ÀÌÅ͸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ OS_STK *OSTCBStkBottom; /* ½ºÅÃÀÇ ÃÖÇÏÀ§¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ INT32U OSTCBStkSize; /* ¹ÙÀÌÆ® ´ÜÀ§ ½ºÅà ũ±â */ INT16U OSTCBOpt; /* OSTaskCreateExt()·Î Àü´ÞµÈ ŽºÅ© ¿É¼Ç */ INT16U OSTCBId; /* ŽºÅ© ID (0..65535) */ #endif struct os_tcb *OSTCBNext; /* TCB ¸®½ºÆ®¿¡¼ ´ÙÀ½ TCB¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ struct os_tcb *OSTCBPrev; /* TCB ¸®½ºÆ®¿¡¼ ÀÌÀü TCB¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ #if (OS_Q_EN && (OS_MAX_QS >= 2)) || OS_MBOX_EN || OS_SEM_EN OS_EVENT *OSTCBEventPtr; /* À̺¥Æ® ÄÁÆ®·Ñ ºí·ÏÀ» °¡¸®Å°´Â Æ÷ÀÎÅÍ */ #endif #if (OS_Q_EN && (OS_MAX_QS >= 2)) || OS_MBOX_EN void *OSTCBMsg; /* OSMboxPost()³ª OSQPost()·ÎºÎÅÍ ¹ÞÀº ¸Þ½ÃÁö */ #endif INT16U OSTCBDly; /* ½Ã°£Áö¿¬¿¡ »ç¿ëÇϴ ƽ ¼ö ¶Ç´Â À̺¥Æ®¸¦ ´ë±âÇÒ ¶§ÀÇ Å¸ÀӾƿô */ INT8U OSTCBStat; /* ŽºÅ© »óÅ */ INT8U OSTCBPrio; /* ŽºÅ© ¿ì¼±¼øÀ§(0 == ÃÖ»óÀ§, 63 == ÃÖÇÏÀ§) */ INT8U OSTCBX; /* ¿ì¼±¼øÀ§¿¡ µû¸¥ ±×·ì¿¡¼ÀÇ ºñÆ® À§Ä¡(0..7) */ INT8U OSTCBY; /* ¿ì¼±¼øÀ§¿¡ µû¸¥ Áغñ Å×ÀÌºí ¾×¼¼½º¿ë À妽º */ INT8U OSTCBBitX; /* Áغñ Å×ÀÌºí¿¡¼ ºñÆ® À§Ä¡¸¦ ¾×¼¼½ºÇϱâ À§ÇÑ ¸¶½ºÅ© */ INT8U OSTCBBitY; /* Áغñ ±×·ì¿¡¼ ºñÆ® À§Ä¡¸¦ ¾×¼¼½ºÇϱâ À§ÇÑ ¸¶½ºÅ© */ #if OS_TASK_DEL_EN BOOLEAN OSTCBDelReq; /* ÀÚ½ÅÀ» »èÁ¦ÇÒ Çʿ䰡 ÀÖ´ÂÁö Ç¥½Ã */ #endif } OS_TCB; /*$PAGE*/ /* ********************************************************************************************************* * Àü¿ª º¯¼ö ********************************************************************************************************* */ OS_EXT INT32U OSCtxSwCtr; /* ¹®¸ÆÀüȯ ¹ß»ý Ä«¿îÅÍ */ #if (OS_MAX_EVENTS >= 2) OS_EXT OS_EVENT *OSEventFreeList; /* ÀÚÀ¯ À̺¥Æ® ÄÁÆ®·Ñ ºí·ÏÀ» °¡¸®Å°´Â Æ÷ÀÎÅÍ */ OS_EXT OS_EVENT OSEventTbl[OS_MAX_EVENTS];/* À̺¥Æ® ÄÁÆ®·Ñ ºí·Ï Å×À̺í */ #endif OS_EXT INT32U OSIdleCtr; /* Idle Ä«¿îÅÍ */ #if OS_TASK_STAT_EN OS_EXT INT8S OSCPUUsage; /* CPU »ç¿ëÀ² */ OS_EXT INT32U OSIdleCtrMax; /* 1Ãʵ¿¾È Ä«¿îÆ®ÇÒ ¼ö ÀÖ´Â idle Ä«¿îÅÍ ÃÖ´ëÄ¡ */ OS_EXT INT32U OSIdleCtrRun; /* 1Ãʵ¿¾È °»½ÅÇÑ idle Ä«¿îÅÍ °ª */ OS_EXT BOOLEAN OSStatRdy; /* Åë°è ŽºÅ©°¡ Áغñ»óÅÂÀÎ °ÍÀ» Ç¥½ÃÇÏ´Â Ä«¿îÅÍ */ #endif OS_EXT INT8U OSIntNesting; /* ÀÎÅÍ·´Æ® Áßø ·¹º§ */ OS_EXT INT8U OSLockNesting; /* ¸ÖƼŽºÅ· Àá±Ý Áßø ·¹º§ */ OS_EXT INT8U OSPrioCur; /* ÇöÀç ŽºÅ©ÀÇ ¿ì¼±¼øÀ§ */ OS_EXT INT8U OSPrioHighRdy; /* ÃÖ»óÀ§ ŽºÅ©ÀÇ ¿ì¼±¼øÀ§ */ OS_EXT INT8U OSRdyGrp; /* Áغñ ¸®½ºÆ® ±×·ì */ OS_EXT INT8U OSRdyTbl[OS_RDY_TBL_SIZE]; /* ½ÇÇà Áغñ»óŠŽºÅ© Å×À̺í */ OS_EXT BOOLEAN OSRunning; /* Ä¿³ÎÀÌ ½ÇÇàÁßÀÓÀ» Ç¥½ÃÇÏ´Â ÇÁ·¡±× */ #if OS_TASK_CREATE_EN || OS_TASK_CREATE_EXT_EN || OS_TASK_DEL_EN OS_EXT INT8U OSTaskCtr; /* »ý¼ºÇÑ Å½ºÅ© ¼ö */ #endif OS_EXT OS_TCB *OSTCBCur; /* ½ÇÇàÁßÀΠŽºÅ© ÄÁÆ®·Ñ ºí·ÏÀ» °¡¸®Å°´Â Æ÷ÀÎÅÍ */ OS_EXT OS_TCB *OSTCBFreeList; /* ÀÚÀ¯ TCB ¸®½ºÆ®¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ OS_EXT OS_TCB *OSTCBHighRdy; /* Áغñ»óÅÂÀÎ ÃÖ»óÀ§ ŽºÅ© TCB¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ*/ OS_EXT OS_TCB *OSTCBList; /* TCBÀÇ ÀÌÁß ¿¬°á ¸®½ºÆ®¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ */ OS_EXT OS_TCB *OSTCBPrioTbl[OS_LOWEST_PRIO + 1];/* »ý¼ºÇÑ TCB¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ Å×À̺í */ OS_EXT INT32U OSTime; /* ½Ã½ºÅÛ Å¸ÀÓÀÇ ÇöÀç°ª(ƽ ´ÜÀ§) ÀúÀå º¯¼ö */ extern INT8U const OSMapTbl[]; /* ¿ì¼±¼øÀ§ -> ºñÆ® ¸¶½ºÅ© ·è¾÷ Å×À̺í */ extern INT8U const OSUnMapTbl[]; /* ¿ì¼±¼øÀ§ -> À妽º ·è¾÷ Å×À̺í */ /*$PAGE*/ /* ********************************************************************************************************* * ÇÔ¼ö ¿øÇü * (Ÿ°Ù µ¶¸³ÀûÀÎ ÇÔ¼ö) ********************************************************************************************************* */ /* ********************************************************************************************************* * ¸Þ½ÃÁö ¸ÞÀϹڽº °ü¸® ********************************************************************************************************* */ #if OS_MBOX_EN void *OSMboxAccept(OS_EVENT *pevent); OS_EVENT *OSMboxCreate(void *msg); void *OSMboxPend(OS_EVENT *pevent, INT16U timeout, INT8U *err); INT8U OSMboxPost(OS_EVENT *pevent, void *msg); INT8U OSMboxQuery(OS_EVENT *pevent, OS_MBOX_DATA *pdata); #endif /* ********************************************************************************************************* * ¸Þ¸ð¸® °ü¸® ********************************************************************************************************* */ #if OS_MEM_EN && (OS_MAX_MEM_PART >= 2) OS_MEM *OSMemCreate(void *addr, INT32U nblks, INT32U blksize, INT8U *err); void *OSMemGet(OS_MEM *pmem, INT8U *err); INT8U OSMemPut(OS_MEM *pmem, void *pblk); INT8U OSMemQuery(OS_MEM *pmem, OS_MEM_DATA *pdata); #endif /* ********************************************************************************************************* * ¸Þ½ÃÁö Å¥ °ü¸® ********************************************************************************************************* */ #if OS_Q_EN && (OS_MAX_QS >= 2) void *OSQAccept(OS_EVENT *pevent); OS_EVENT *OSQCreate(void **start, INT16U size); INT8U OSQFlush(OS_EVENT *pevent); void *OSQPend(OS_EVENT *pevent, INT16U timeout, INT8U *err); INT8U OSQPost(OS_EVENT *pevent, void *msg); INT8U OSQPostFront(OS_EVENT *pevent, void *msg); INT8U OSQQuery(OS_EVENT *pevent, OS_Q_DATA *pdata); #endif /*$PAGE*/ /* ********************************************************************************************************* * ¼¼¸¶Æ÷¾î °ü¸® ********************************************************************************************************* */ #if OS_SEM_EN INT16U OSSemAccept(OS_EVENT *pevent); OS_EVENT *OSSemCreate(INT16U value); void OSSemPend(OS_EVENT *pevent, INT16U timeout, INT8U *err); INT8U OSSemPost(OS_EVENT *pevent); INT8U OSSemQuery(OS_EVENT *pevent, OS_SEM_DATA *pdata); #endif /* ********************************************************************************************************* * ŽºÅ© °ü¸® ********************************************************************************************************* */ #if OS_TASK_CHANGE_PRIO_EN INT8U OSTaskChangePrio(INT8U oldprio, INT8U newprio); #endif INT8U OSTaskCreate(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio); #if OS_TASK_CREATE_EXT_EN INT8U OSTaskCreateExt(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio, INT16U id, OS_STK *pbos, INT32U stk_size, void *pext, INT16U opt); #endif #if OS_TASK_DEL_EN INT8U OSTaskDel(INT8U prio); INT8U OSTaskDelReq(INT8U prio); #endif #if OS_TASK_SUSPEND_EN INT8U OSTaskResume(INT8U prio); INT8U OSTaskSuspend(INT8U prio); #endif #if OS_TASK_CREATE_EXT_EN INT8U OSTaskStkChk(INT8U prio, OS_STK_DATA *pdata); #endif INT8U OSTaskQuery(INT8U prio, OS_TCB *pdata); /* ********************************************************************************************************* * ½Ã°£ °ü¸® ********************************************************************************************************* */ void OSTimeDly(INT16U ticks); INT8U OSTimeDlyHMSM(INT8U hours, INT8U minutes, INT8U seconds, INT16U milli); INT8U OSTimeDlyResume(INT8U prio); INT32U OSTimeGet(void); void OSTimeSet(INT32U ticks); void OSTimeTick(void); /* ********************************************************************************************************* * MISCELLANEOUS ********************************************************************************************************* */ void OSInit(void); void OSIntEnter(void); void OSIntExit(void); void OSSchedLock(void); void OSSchedUnlock(void); void OSStart(void); void OSStatInit(void); INT16U OSVersion(void); /*$PAGE*/ /* ********************************************************************************************************* * ³»ºÎ ÇÔ¼ö ¿øÇü * (ÀÀ¿ëÇÁ·Î±×·¥Àº ÀÌ ÇÔ¼öµéÀ» È£ÃâÇÒ ¼ö ¾ø´Ù) ********************************************************************************************************* */ #if OS_MBOX_EN || OS_Q_EN || OS_SEM_EN void OSEventTaskRdy(OS_EVENT *pevent, void *msg, INT8U msk); void OSEventTaskWait(OS_EVENT *pevent); void OSEventTO(OS_EVENT *pevent); void OSEventWaitListInit(OS_EVENT *pevent); #endif #if OS_MEM_EN && (OS_MAX_MEM_PART >= 2) void OSMemInit(void); #endif #if OS_Q_EN void OSQInit(void); #endif void OSSched(void); void OSTaskIdle(void *data); #if OS_TASK_STAT_EN void OSTaskStat(void *data); #endif INT8U OSTCBInit(INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id, INT16U stk_size, void *pext, INT16U opt); /*$PAGE*/ /* ********************************************************************************************************* * ÇÔ¼ö ¿øÇü * (Ÿ°Ù ÀÇÁ¸Àû ÇÔ¼ö) ********************************************************************************************************* */ void OSCtxSw(void); void OSIntCtxSw(void); void OSStartHighRdy(void); void OSTaskCreateHook(OS_TCB *ptcb); void OSTaskDelHook(OS_TCB *ptcb); void OSTaskStatHook(void); void *OSTaskStkInit(void (*task)(void *pd), void *pdata, void *ptos, INT16U opt); void OSTaskSwHook(void); void OSTickISR(void); void OSTimeTickHook(void);