[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit
Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/cp/ps/plat/inc/oss/oss_kernel.h b/cp/ps/plat/inc/oss/oss_kernel.h
new file mode 100644
index 0000000..6c05ab7
--- /dev/null
+++ b/cp/ps/plat/inc/oss/oss_kernel.h
@@ -0,0 +1,634 @@
+/**
+ * @file oss_kernel.h
+ * @brief ²Ù×÷ϵͳÊÊÅä²ã½Ó¿ÚÍ·Îļþ
+ *
+ * Copyright (C) 2017 Sanechips Technology Co., Ltd.
+ *
+ *
+ */
+
+#ifndef _OSS_KERNEL_H
+#define _OSS_KERNEL_H
+
+/*******************************************************************************
+ * Include header files *
+ ******************************************************************************/
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/*******************************************************************************
+ * Macro definitions *
+ ******************************************************************************/
+/* ¶ÏÑÔ */
+/**
+ * @brief assert¶ÏÑÔ
+ * @param _EXP Èë²Î£¬Òì³£±í´ïʽ
+ */
+#ifdef _DEBUG
+# if defined _OS_WIN
+# define zOss_ASSERT(_EXP) do {if(!(_EXP)) EXP_Handler(#_EXP, __FILE__, NULL, __LINE__);} while(0)
+# else
+# define zOss_ASSERT(_EXP) do {if(!(_EXP)) EXP_Handler(#_EXP, NULL, NULL, __LINE__);} while(0)
+# endif
+#else
+# define zOss_ASSERT(_EXP)
+#endif
+
+/**
+ * @brief ´ø·µ»ØÖµµÄassert¶ÏÑÔ
+ * @param _EXP Èë²Î£¬Òì³£±í´ïʽ
+ * @param _RET Èë²Î£¬·µ»ØÖµ
+ */
+#define zOss_AssertEx(_EXP, _RET) do {if(!(_EXP)) {zOss_ASSERT((_EXP)); return (_RET);}} while(0)
+
+/**
+ * @brief ´ø·µ»ØÖµºÍ¸½¼ÓÖ´ÐвÙ×÷µÄassert¶ÏÑÔ
+ * @param _EXP Èë²Î£¬Òì³£±í´ïʽ
+ * @param _ACT Èë²Î£¬¸½¼ÓÖ´ÐвÙ×÷
+ * @param _RET Èë²Î£¬·µ»ØÖµ
+ */
+#define zOss_AssertExA(_EXP, _ACT, _RET) do {if(!(_EXP)) {zOss_ASSERT((_EXP)); _ACT; return (_RET);}} while(0)
+
+/**
+ * @brief ²»´ø·µ»ØÖµµÄassert¶ÏÑÔ
+ * @param _EXP Èë²Î£¬Òì³£±í´ïʽ
+ */
+#define zOss_AssertExN(_EXP) do {if(!(_EXP)) {zOss_ASSERT((_EXP)); return;}} while(0)
+
+/* ³£Ó÷µ»ØÖµ */
+/**
+ * @brief ZOSS_SUCCESSºê¶¨Òå
+ */
+#define ZOSS_SUCCESS 0x0
+
+/**
+ * @brief ZOSS_ERRORºê¶¨Òå
+ */
+#define ZOSS_ERROR 0xffffffff
+
+/**
+ * @brief ZOSS_NULLºê¶¨Òå
+ */
+#define ZOSS_NULL NULL
+
+/**
+ * @brief ÎÞЧÏß³ÌIDºê¶¨Òå
+ */
+#define ZOSS_INVALID_THREAD_ID NULL
+
+/**
+ * @brief ÎÞЧÈÎÎñIDºê¶¨Òå
+ */
+#define ZOSS_INVALID_TASK_ID NULL
+
+/**
+ * @brief ÎÞЧ¶¨Ê±Æ÷IDºê¶¨Òå
+ */
+#define ZOSS_INVALID_TIMER_ID NULL
+
+/**
+ * @brief Ïß³ÌÃû×î´ó³¤¶È
+ */
+#define MAX_THREADNAME_LEN 63
+
+/**
+ * @brief ¼ÆÊýÐźÅÁ¿Ãû³Æ×î´ó³¤¶È
+ */
+#define MAX_SEMNAME_LEN 63
+
+/**
+ * @brief »¥³âÐźÅÁ¿Ãû³Æ×î´ó³¤¶È
+ */
+#define MAX_MUTEXNAME_LEN 63
+
+
+/**
+ * @brief µÈ´ý³¬Ê±ÊôÐÔ£¬²»µÈ´ý
+ */
+#define ZOSS_NO_WAIT 0x0
+
+/**
+ * @brief µÈ´ý³¬Ê±ÊôÐÔ£¬Ò»Ö±µÈ´ýÏÂÈ¥
+ */
+#define ZOSS_WAIT_FOREVER 0xffffffff
+
+
+/**
+ * @brief »¥³âÌåÊôÐÔ£¬°´ÓÅÏȼ¶»ñÈ¡
+ */
+#define ZOSS_INHERIT 0x1
+
+/**
+ * @brief »¥³âÌåÊôÐÔ£¬°´Ë³Ðò»ñÈ¡
+ */
+#define ZOSS_NO_INHERIT 0x0
+
+#ifdef _OS_LINUX
+# define ZOSS_PREEMPT_IRQ_THREAD (0xffffffff)
+#endif
+
+/*******************************************************************************
+ * Type definitions *
+ ******************************************************************************/
+/**
+ * @brief ÐźÅÁ¿IDÊý¾ÝÀàÐͶ¨Òå
+ */
+typedef VOID *ZOSS_SEMAPHORE_ID;
+
+/**
+ * @brief »¥³âÌåIDÊý¾ÝÀàÐͶ¨Òå
+ */
+typedef VOID *ZOSS_MUTEX_ID;
+
+/**
+ * @brief ¶¨Ê±Æ÷IDÊý¾ÝÀàÐͶ¨Òå
+ */
+typedef VOID *ZOSS_TIMER_ID;
+
+/**
+ * @brief Ïß³ÌIDÊý¾ÝÀàÐͶ¨Òå
+ */
+typedef VOID *ZOSS_THREAD_ID;
+
+/**
+ * @brief ÈÎÎñIDÊý¾ÝÀàÐͶ¨Òå
+ */
+typedef VOID *ZOSS_TASK_ID;
+
+/**
+ * @brief ¶ÓÁÐIDÊý¾ÝÀàÐͶ¨Òå
+ */
+typedef VOID *ZOSS_QUEUE_ID;
+
+/**
+ * @brief ʼþIDÊý¾ÝÀàÐͶ¨Òå
+ */
+typedef VOID *ZOSS_EVENT_ID;
+
+/**
+ * @brief Ï̺߳¯ÊýÀàÐͶ¨Òå
+ */
+typedef VOID (*ZOSS_THREAD_FUN)(SINT32);
+
+/**
+ * @brief ¶¨Ê±Æ÷»Øµ÷º¯ÊýÀàÐͶ¨Òå
+ */
+typedef VOID (*ZOSS_TIMER_FUN)(SINT32);
+
+/**
+ * @brief Ï̹߳³×Óº¯ÊýÀàÐͶ¨Òå
+ */
+typedef UINT32 (*THREAD_MSG_HOOK)(UINT32 msg_id, VOID *p_buf, UINT32 buf_size, UINT8 dire);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+/* Ï̹߳ÜÀí */
+/**
+ * @brief Ï̹߳ÜÀí½á¹¹
+ * @param threadid Ïß³Ìid
+ * @param threadname Ïß³ÌÃû³Æ
+ * @param runstatus Ïß³ÌÔËÐÐ״̬
+ * @param priority Ïß³ÌÓÅÏȼ¶
+ * @param maxstack Ïß³ÌÕ»×î´óջʹÓÃÂÊ
+ * @param cpupercent Ïß³ÌCPUÕ¼ÓÃÂÊ
+ * @param stacksize Ï̶߳ÑÕ»´óС
+ * @param cputime Ïß³ÌCPUÕ¼ÓÃÂÊʱ¼ä
+ * @param topstack Ïß³ÌÕ»¶¥µØÖ·
+ * @param runtime Ïß³ÌÔËÐÐʱ¼ä
+ * @param RunTimeInMs
+ * @param msgnum Ïß³ÌÏûÏ¢¶ÓÁÐÏûÏ¢Êý
+ * @param runcount Ïß³ÌÔËÐдÎÊý
+ * @param curpath Ï̵߳±Ç°Â·¾¶£¬ÓëosÓйØ
+ * @param ptrf µ÷ÊÔÏ̵߳ǼDZí
+ * @param curtaskid µ±Ç°ÈÎÎñID
+ * @param heapsize Ïß³ÌÉêÇë¶ÑÄÚ´æ´óС
+ * @param ubsize Ïß³ÌÉêÇëÄÚ´æ³Ø´óС
+ * @param psmCpuTime Ïß³Ìpsm¼ÆÊ±Ê±¼ä
+ * @param sleepTimerId Ïß³Ì˯Ãßʱ´´½¨µÄ¶¨Ê±Æ÷ID
+ * @param sleepsem Ïß³Ì˯Ãßʱ´´½¨µÄÐźÅÁ¿ID
+ */
+typedef struct
+{
+ ZOSS_THREAD_ID threadid; /* Ïß³ÌID */
+ CHAR threadname[MAX_THREADNAME_LEN + 1]; /* Ïß³ÌÃû */
+ UINT8 runstatus; /* Ïß³ÌÔËÐÐ״̬ */
+ UINT8 priority; /* Ïß³ÌÓÅÏȼ¶ */
+ UINT8 maxstack; /* Ïß³ÌÕ»×î´óջʹÓÃÂÊ */
+ FLOAT cpupercent; /* Ïß³ÌCPUÕ¼ÓÃÂÊ */
+ UINT32 stacksize; /* Ï̶߳ÑÕ»´óС */
+ UINT32 cputime; /* Ïß³ÌCPUÕ¼ÓÃÂÊʱ¼ä */
+ UINT32 topstack; /* Ïß³ÌÕ»¶¥µØÖ· */
+ UINT32 runtime; /* Ïß³ÌÔËÐÐʱ¼ä */
+ UINT32 RunTimeInMs;
+ UINT32 msgnum; /* Ïß³ÌÏûÏ¢¶ÓÁÐÏûÏ¢Êý */
+ UINT32 runcount; /* Ïß³ÌÔËÐдÎÊý */
+ CHAR *curpath; /* Ï̵߳±Ç°Â·¾¶£¬ÓëosÓÐ¹Ø */
+ VOID *ptrf; /* µ÷ÊÔÏ̵߳ǼDZí */
+ VOID *curtaskid; /* µ±Ç°ÈÎÎñID */
+ UINT32 heapsize; /* Ïß³ÌÉêÇë¶ÑÄÚ´æ´óС */
+ UINT32 ubsize; /* Ïß³ÌÉêÇëÄÚ´æ³Ø´óС */
+ UINT32 psmCpuTime; /* Ïß³Ìpsm¼ÆÊ±Ê±¼ä */
+ ZOSS_TIMER_ID sleepTimerId; /* Ïß³Ì˯Ãßʱ´´½¨µÄ¶¨Ê±Æ÷ID */
+ ZOSS_SEMAPHORE_ID sleepsem; /* Ïß³Ì˯Ãßʱ´´½¨µÄÐźÅÁ¿ID */
+}T_ZOsa_ThreadUserArea; /* Ïß³ÌÓû§¿Õ¼ä */
+#endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
+/*******************************************************************************
+ * Global variable declarations *
+ ******************************************************************************/
+
+/*******************************************************************************
+ * Global function declarations *
+ ******************************************************************************/
+/* Ï̹߳ÜÀí */
+
+ /**
+ * @brief »ñÈ¡ÓÅÏȼ¶Öµ½Ó¿Ú
+ * @param offset Èë²Î£¬È¡Öµ0~31
+ * @return Èô³É¹¦£¬·µ»ØÓÅÏȼ¶ÊýÖµ£»·ñÔò·µ»ØZOSS_ERROR
+ * @retval ÓÅÏȼ¶ÊýÖµ ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note
+ * @warning
+ */
+UINT32 zOss_GetPrioCfg(UINT8 offset);
+
+/**
+ * @brief ´´½¨Ï߳̽ӿÚ
+ * @param thread_name Èë²Î£¬Ïß³ÌÃû³Æ
+ * @param entry Èë²Î£¬Ïß³ÌÈë¿ÚʵÌ庯Êý
+ * @param arg Èë²Î£¬Ïß³ÌʵÌ庯ÊýµÄ²ÎÊý
+ * @param stack_size Èë²Î£¬Ïß³ÌÓµÓеĶÑÕ»´óС
+ * @param priority Èë²Î£¬Ï̵߳ÄÓÅÏȵȼ¶0~31
+ * @param preempt Èë²Î£¬Í¬ÓÅÏȼ¶Ïß³ÌÊÇ·ñÔÊÐíÇÀÕ¼£¬·Ç0ֵΪÇÀÕ¼Ị̈߳¬·ñÔòΪ²»¿ÉÇÀÕ¼Ị̈߳¬¼´Ö´ÐÐʱ¼äƬµ÷¶È
+ * @param auto_start Èë²Î£¬´´½¨Ï̺߳óÊÇ·ñ×Ô¶¯Ö´ÐÐ
+ * @return Èç¹û´´½¨³É¹¦·µ»ØÏß³ÌID£¬Ê§°Ü·µ»ØZOSS_INVALID_THREAD_ID
+ * @retval ZOSS_THREAD_IDÀàÐ͵ÄÏß³Ìid ³É¹¦
+ * @retval ZOSS_INVALID_THREAD_ID ʧ°Ü
+ * @note
+ * @warning
+ */
+ZOSS_THREAD_ID zOss_CreateThread(const CHAR *thread_name, VOID (*entry)(SINT32), SINT32 arg, UINT32 stack_size, UINT32 priority, UINT32 preempt, UINT32 auto_start);
+
+/**
+ * @brief Í˳öµ±Ç°Ï߳̽ӿÚ
+ * @param void
+ * @return void
+ * @note
+ * @warning
+ */
+VOID zOss_ExitThread(VOID);
+
+/**
+ * @brief Ïß³Ì¹ÒÆð½Ó¿Ú
+ * @param thread_id Èë²Î£¬ÐèÒª¹ÒÆðµÄÏß³Ìid
+ * @return Èô³É¹¦£¬·µ»ØZOSS_SUCCESS£»·ñÔòϵͳ¶ÏÑÔ
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note ±¾º¯Êý¿ÉÒÔÓÃÓÚÏ̵߳Ä×ÔÎÒ¹ÒÆð
+ * @warning
+ */
+UINT32 zOss_SuspendThread(ZOSS_THREAD_ID thread_id);
+
+/**
+ * @brief Ïָ̻߳´½Ó¿Ú
+ * @param thread_id Èë²Î£¬ÐèÒª»Ö¸´µÄÏß³Ìid
+ * @return Èô³É¹¦£¬·µ»ØZOSS_SUCCESS£»·ñÔòϵͳ¶ÏÑÔ
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note
+ * @warning
+ */
+UINT32 zOss_ResumeThread(ZOSS_THREAD_ID thread_id);
+
+/**
+ * @brief Ïß³Ì˯Ãß½Ó¿Ú
+ * @param time_in_ms Èë²Î£¬Ï߳̽«ÒªË¯ÃßµÄʱ¼ä£¬µ¥Î»£ºms
+ * @return void
+ * @note
+ * @warning
+ */
+VOID zOss_Sleep(UINT32 time_in_ms);
+
+/**
+ * @brief Ïß³Ìɾ³ý½Ó¿Ú
+ * @param thread_id Èë²Î£¬±»É¾³ýµÄÏß³Ìid
+ * @return Èô³É¹¦£¬·µ»ØZOSS_SUCCESS£»·ñÔòϵͳ¶ÏÑÔ
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note zOss_CreateThreadº¯ÊýÖÐÉêÇëµÄÏß³ÌÕ»¿Õ¼äºÍÏ߳̿ØÖÆ¿é½á¹¹¿Õ¼ä»áÔÚ
+ * Cyg_Thread::exitº¯ÊýÖÐÊÍ·Å£¬ÒòΪÔÚcyg_thread_deleteº¯ÊýÖ´ÐÐÍêºó£¬
+ * ºóÃæµÄËùÓдúÂëËæ×ű¾Ï̵߳ÄÏûÍö¶ø±äµÃÎÞЧÁË¡£
+ * @warning
+ */
+UINT32 zOss_DeleteThread(ZOSS_THREAD_ID thread_id);
+
+/**
+ * @brief »ñÈ¡µ±Ç°Ïß³Ìid½Ó¿Ú
+ * @param void
+ * @return µ±Ç°Ïß³Ìid
+ * @note
+ * @warning
+ */
+ZOSS_THREAD_ID zOss_GetCurThreadID(VOID);
+
+/**
+ * @brief ¸ù¾Ý²ÎÊýÌṩµÄÏß³ÌÃû³Æ£¬²éÕÒ¸ÃÏ̵߳ÄÏß³Ìid
+ * @param thread_name Èë²Î£¬Ïß³ÌÃû³Æ
+ * @return Èô²éÕҳɹ¦£¬·µ»ØÏ̵߳ÄÓÐЧÏß³Ìid£»·ñÔòϵͳ¶ÏÑÔ
+ * @note
+ * @warning
+ */
+ZOSS_THREAD_ID zOss_GetThreadIDByName(const CHAR *thread_name);
+
+/**
+ * @brief ¸ù¾Ý²ÎÊýÌṩµÄÏß³Ìid£¬»ñÈ¡¸ÃÏ̵߳ÄÏß³ÌÃû³Æ
+ * @param thread_id Èë²Î£¬´ý»ñÈ¡Ïß³ÌÃû³ÆµÄÏß³Ìid
+ * @param thread_name ³ö²Î£¬Ïß³ÌÃû³Æ´æ·ÅµØÖ·
+ * @return Èô³É¹¦£¬·µ»ØÏß³ÌÃû³ÆÖ¸Õ룻·ñÔòϵͳ¶ÏÑÔ»ò·µ»Ø¿ÕÖ¸Õë
+ * @retval Ïß³ÌÃû³ÆÖ¸Õë ³É¹¦
+ * @retval NULL ʧ°Ü
+ * @note
+ * @warning
+ */
+CHAR *zOss_GetThreadName(ZOSS_THREAD_ID thread_id, CHAR *thread_name);
+
+/**
+ * @brief ¸ù¾Ý²ÎÊýÌṩµÄÏß³Ìid£¬»ñÈ¡¸ÃÏ̵߳ÄÏß³ÌÐÅÏ¢
+ * @param thread_id Èë²Î£¬´ý»ñÈ¡Ïß³ÌÐÅÏ¢µÄÏß³Ìid
+ * @param thread_name ³ö²Î£¬Ïß³ÌÃû³Æ´æ·ÅµØÖ·
+ * @param stat ³ö²Î£¬Ïß³Ì״̬´æ·ÅµØÖ·
+ * @param priority ³ö²Î£¬Ïß³ÌÓÅÏȼ¶´æ·ÅµØÖ·
+ * @param preempt ³ö²Î£¬Ï߳̿ÉÇÀÕ¼´æ·ÅµØÖ·
+ * @return Èô³É¹¦£¬·µ»ØZOSS_SUCCESS£»·ñÔòϵͳ¶ÏÑÔ
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note
+ * @warning
+ */
+UINT32 zOss_GetThreadInfo(ZOSS_THREAD_ID thread_id, CHAR *thread_name, UINT32 *stat, UINT32 *priority, UINT32 *preempt);
+
+/**
+ * @brief ¸ù¾Ý²ÎÊýÌṩµÄÏß³Ìid£¬ÉèÖøÃÏ̵߳ÄÏß³ÌÓÅÏȼ¶
+ * @param thread_id Èë²Î£¬´ýÉèÖÃÓÅÏȼ¶µÄÏß³Ìid
+ * @param priority Èë²Î£¬Ï߳̽«±»ÉèÖõÄÓÅÏȼ¶
+ * @return Èô³É¹¦£¬·µ»ØZOSS_SUCCESS£»·ñÔòϵͳ¶ÏÑÔ
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note
+ * @warning
+ */
+UINT32 zOss_SetThreadPri(ZOSS_THREAD_ID thread_id, UINT32 priority);
+
+/**
+ * @brief ¸ù¾Ý²ÎÊýÌṩµÄÏß³Ìid£¬»ñÈ¡¸ÃÏ̵߳ÄÏß³ÌÓÅÏȼ¶
+ * @param thread_id Èë²Î£¬´ýÉèÖÃÓÅÏȼ¶µÄÏß³Ìid
+ * @param priority ³ö²Î£¬»ñÈ¡µÄÏß³ÌÓÅÏȼ¶´æ·ÅµØÖ·
+ * @return Èô³É¹¦£¬·µ»ØZOSS_SUCCESS£»·ñÔòϵͳ¶ÏÑÔ
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note
+ * @warning
+ */
+UINT32 zOss_GetThreadPri(ZOSS_THREAD_ID thread_id, UINT32 *priority);
+
+/**
+ * @brief ÑéÖ¤Ò»¸öÏß³ÌÊÇ·ñÓÐЧ
+ * @param threadID Èë²Î£¬´ýÑéÖ¤µÄÏß³Ìid
+ * @return ÈôÏß³ÌÓÐЧ£¬·µ»ØZOSS_SUCCESS£»·ñÔòϵͳ¶ÏÑÔ
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note
+ * @warning
+ */
+UINT32 zOss_IdentifyThread(ZOSS_THREAD_ID threadID);
+
+/* Ïß³ÌÏûÏ¢¹ÜÀíÄ£¿é */
+/**
+ * @brief ´ÓÄÚ´æ³ØÉêÇëÏûϢͷ+»º³åÇø£¬²¢·µ»Ø»º³åÇøÖ¸Õë
+ * @param size Èë²Î£¬»º³åÇø´óС
+ * @return »º³åÇøÖ¸Õë
+ * @note ¸ÃÉêÇë½Ó¿Ú£¬»á´ø×ÅÏûϢͷһÆðÉêÇ룬µ«·µ»Ø¸øÓû§µÄÊǰþÀëÁËÏûϢͷµÄÓû§Ê¹ÓÃ¿Õ¼äµØÖ·
+ * @warning ±ØÐëºÍzOss_ThreadRetMsgBufÅä¶ÔʵÏÖ
+ */
+VOID *zOss_ThreadGetMsgBuf(UINT32 size);
+
+/**
+ * @brief ÏòÄÚ´æ³ØÊÍ·ÅÏûϢͷ+»º³åÇø
+ * @param p_buf Èë²Î£¬»º³åÇøÖ¸Õë
+ * @return void
+ * @note ¸ÃÊÍ·Å½Ó¿Ú»á´ø×ÅÏûϢͷһÆðÊÍ·Å
+ * @warning ±ØÐëºÍzOss_ThreadGetMsgBufÅä¶ÔʵÏÖ
+ */
+VOID zOss_ThreadRetMsgBuf(VOID *p_buf);
+
+/**
+ * @brief Ïòthread_idÏ̷߳¢ËÍÏûÏ¢
+ * @param msg_id Èë²Î£¬ÏûÏ¢id
+ * @param p_buf Èë²Î£¬»º³åÇøÖ¸Õë
+ * @param buf_size Èë²Î£¬»º³åÇø´óС
+ * @param thread_id Èë²Î£¬Ä¿±êÏß³Ìid
+ * @return ³É¹¦£¬·µ»ØZOSS_SUCCESS£¬·ñÔò·µ»ØZOSS_ERROR
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note ±ØÐëºÍzOss_ThreadRecvMsgÅä¶ÔʵÏÖ
+ * @warning
+ */
+UINT32 zOss_ThreadSendMsg(UINT32 msg_id, VOID *p_buf, UINT16 buf_size, ZOSS_THREAD_ID thread_id);
+
+/**
+ * @brief Ï߳̽ÓÊÕÏûÏ¢
+ * @param p_msg_id Èë²Î£¬ÏûÏ¢idµÄ´æ·ÅµØÖ·
+ * @param p_buf Èë²Î£¬ÏûÏ¢Ö¸ÕëµÄ´æ·ÅµØÖ·
+ * @param p_buf_size Èë²Î£¬ÏûÏ¢´óСµÄ´æ·ÅµØÖ·
+ * @param timeout Èë²Î£¬½ÓÊÕÏûÏ¢µÄ³¬Ê±Ê±¼ä
+ * @return ³É¹¦£¬·µ»ØZOSS_SUCCESS£¬·ñÔò·µ»ØZOSS_ERROR
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note ±ØÐëºÍzOss_ThreadSendMsgÅä¶ÔʵÏÖ
+ * @warning
+ */
+UINT32 zOss_ThreadRecvMsg(UINT32 *p_msg_id, VOID **p_buf, UINT32 *p_buf_size, UINT32 timeout);
+
+/**
+ * @brief ×¢²áÏß³ÌÏûÏ¢¹³×Óº¯Êý
+ * @param thread_id Èë²Î£¬Ïß³Ìid
+ * @param type Èë²Î£¬¹³×Óº¯ÊýÀàÐÍ
+ * @param dire Èë²Î£¬¹³×Óº¯ÊýÅäÖÃ
+ * @param func Èë²Î£¬¹³×Óº¯ÊýÖ¸Õë
+ * @return ³É¹¦£¬·µ»ØZOSS_SUCCESS£¬·ñÔò·µ»ØZOSS_ERROR
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note
+ * @warning
+ */
+UINT32 zOss_RegThreadMsgHook(ZOSS_THREAD_ID thread_id, UINT8 type, UINT8 dire, THREAD_MSG_HOOK func);
+
+/* ÏûϢͨѶ */
+
+/**
+ * @brief ÏòÖ¸¶¨µÄÏ̷߳¢ËÍÏûÏ¢
+ * @param thread_id Èë²Î£¬Ä¿±êÏ̵߳ÄÏß³Ìid
+ * @param msg_ptr Èë²Î£¬ÏûÏ¢Êý¾ÝµÄÖ¸Õë
+ * @param size Èë²Î£¬ÏûÏ¢µÄ´óС
+ * @param timeout Èë²Î£¬·¢ËÍÏûÏ¢µÄ³¬Ê±Ê±¼ä
+ * @return ³É¹¦£¬·µ»ØZOSS_SUCCESS£¬·ñÔò·µ»ØZOSS_ERROR
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note Èô²ÎÊýtimeoutÊÇZOSS_WAIT_FOREVER£¬ÔòÒ»Ö±µÈ´ýÏûÏ¢·¢Ëͳɹ¦ÔÙ·µ»Ø£»
+ Èô²ÎÊýtimeoutÊÇZOSS_NO_WAIT£¬Ôò³¢ÊÔ·¢ËÍÏûÏ¢£¬·¢ËÍʧ°Ü£¬Ö±½Ó·µ»Ø£»
+ ·ñÔòtimeoutÊdz¬Ê±µÄʱ¼ä£¬¼ÆËã·½·¨Êǽ«µ±Ç°ÏµÍ³Ê±¼äºÍtimeoutÏà¼Ó£¬
+ ³ÉΪabs_timeout,È»ºóÆô¶¯Ò»¸ö¶¨Ê±Æ÷£¬Ö±ÖÁÏûÏ¢·¢Ëͳɹ¦»ò³¬Ê±
+ * @warning
+ */
+UINT32 zOss_SendMsg(ZOSS_THREAD_ID thread_id, VOID *msg_ptr, UINT32 size, UINT32 timeout);
+
+/**
+ * @brief ½ÓÊÕÏûÏ¢
+ * @param msg_ptr ³ö²Î£¬ÏûÏ¢Ö¸ÕëµÄ´æ·ÅµØÖ·
+ * @param size ³ö²Î£¬ÏûÏ¢Êý¾Ý´óСµÄ´æ·ÅµØÖ·
+ * @param timeout Èë²Î£¬½ÓÊÕÏûÏ¢µÄ³¬Ê±Ê±¼ä
+ * @return ³É¹¦£¬·µ»ØZOSS_SUCCESS£¬·ñÔò·µ»ØZOSS_ERROR
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note Èô²ÎÊýtimeoutÊÇZOSS_WAIT_FOREVER£¬ÔòÒ»Ö±µÈ´ýÏûÏ¢·¢Ëͳɹ¦ÔÙ·µ»Ø£»
+ Èô²ÎÊýtimeoutÊÇZOSS_NO_WAIT£¬Ôò³¢ÊÔ·¢ËÍÏûÏ¢£¬·¢ËÍʧ°Ü£¬Ö±½Ó·µ»Ø£»
+ ·ñÔòtimeoutÊdz¬Ê±µÄʱ¼ä£¬¼ÆËã·½·¨Êǽ«µ±Ç°ÏµÍ³Ê±¼äºÍtimeoutÏà¼Ó£¬
+ ³ÉΪabs_timeout,È»ºóÆô¶¯Ò»¸ö¶¨Ê±Æ÷£¬Ö±ÖÁÏûÏ¢·¢Ëͳɹ¦»ò³¬Ê±
+ * @warning
+ */
+UINT32 zOss_RecvMsg(VOID **msg_ptr, UINT32 *size, UINT32 timeout);
+
+/* ¼ÆÊýÐźÅÁ¿ */
+/**
+ * @brief ´´½¨ÐźÅÁ¿
+ * @param name_ptr Èë²Î£¬ÐźÅÁ¿µÄÃû³Æ
+ * @param initial_count Èë²Î£¬ÐźÅÁ¿µÄ³õʼ¼ÆÊýÖµ
+ * @return ´´½¨³É¹¦£¬·µ»ØÐźÅÁ¿µÄ¾ä±ú£»·ñÔòϵͳ¶ÏÑÔ
+ * @note
+ * @warning
+ */
+ZOSS_SEMAPHORE_ID zOss_CreateSemaphore(const CHAR *name_ptr, UINT32 initial_count);
+
+/**
+ * @brief »ñÈ¡ÐźÅÁ¿
+ * @param sem_id Èë²Î£¬ÕýÔÚ»ñÈ¡µÄÐźÅÁ¿id
+ * @param timeout Èë²Î£¬³¬Ê±¼ÆÊý
+ * @return ³É¹¦£¬·µ»ØZOSS_SUCCESS£¬·ñÔò·µ»ØZOSS_ERROR
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note Èô²ÎÊýtimeoutÊÇZOSS_WAIT_FOREVER£¬ÔòÒ»Ö±µÈ´ýÏûÏ¢·¢Ëͳɹ¦ÔÙ·µ»Ø£»
+ Èô²ÎÊýtimeoutÊÇZOSS_NO_WAIT£¬Ôò³¢ÊÔ·¢ËÍÏûÏ¢£¬·¢ËÍʧ°Ü£¬Ö±½Ó·µ»Ø£»
+ ·ñÔòtimeoutÊdz¬Ê±µÄʱ¼ä£¬¼ÆËã·½·¨Êǽ«µ±Ç°ÏµÍ³Ê±¼äºÍtimeoutÏà¼Ó£¬
+ ³ÉΪabs_timeout,È»ºóÆô¶¯Ò»¸ö¶¨Ê±Æ÷£¬Ö±ÖÁÏûÏ¢·¢Ëͳɹ¦»ò³¬Ê±
+ * @warning
+ */
+UINT32 zOss_GetSemaphore(ZOSS_SEMAPHORE_ID sem_id, UINT32 timeout);
+
+/**
+ * @brief ÊÍ·ÅÐźÅÁ¿
+ * @param sem_id Èë²Î£¬ÕýÔÚÊͷŵÄÐźÅÁ¿id
+ * @return Èô³É¹¦£¬·µ»ØZOSS_SUCCESS£»·ñÔòϵͳ¶ÏÑÔ
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note
+ * @warning
+ */
+UINT32 zOss_PutSemaphore(ZOSS_SEMAPHORE_ID sem_id);
+
+/**
+ * @brief »ñÈ¡ÐźÅÁ¿µÄµ±Ç°¼ÆÊýÖµ
+ * @param sem_id Èë²Î£¬ÕýÔÚ±»»ñÈ¡¼ÆÊýÖµµÄÐźÅÁ¿id
+ * @return ¸ÃÐźÅÁ¿µÄµ±Ç°¼ÆÊýÖµ
+ * @note
+ * @warning
+ */
+UINT32 zOss_GetSemaphoreCount(ZOSS_SEMAPHORE_ID sem_id);
+
+/**
+ * @brief ɾ³ýÐźÅÁ¿
+ * @param sem_id Èë²Î£¬±»É¾³ýµÄÐźÅÁ¿id
+ * @return Èô³É¹¦£¬·µ»ØZOSS_SUCCESS£»·ñÔòϵͳ¶ÏÑÔ
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note
+ * @warning
+ */
+UINT32 zOss_DeleteSemaphore(ZOSS_SEMAPHORE_ID sem_id);
+
+/* »¥³âÐźÅÁ¿ */
+/**
+ * @brief ´´½¨»¥³âÌå
+ * @param name_ptr Èë²Î£¬»¥³âÌåÃû³Æ
+ * @param priority_inherit Èë²Î£¬»¥³âÌåÊôÐÔ£¬Èç¹ûÊÇZOSS_INHERIT£¬ÔòÏß³ÌÖ®¼ä°´
+ ÓÅÏȼ¶Ë³Ðò»ñÈ¡»¥³âÌ壻Èç¹ûÊÇZOSS_NO_INHERIT£¬Ôò°´µÈ´ýµÄ˳Ðò»ñÈ¡
+ »¥³âÌå
+ * @return Èô³É¹¦£¬·µ»Ø´´½¨µÄ»¥³âÌå¾ä±ú£»·ñÔòϵͳ¶ÏÑÔ
+ * @note
+ * @warning
+ */
+ZOSS_MUTEX_ID zOss_CreateMutex(const CHAR *name_ptr, UINT32 priority_inherit);
+
+/**
+ * @brief »ñÈ¡»¥³âÌå
+ * @param mutex_id Èë²Î£¬´ý»ñÈ¡µÄ»¥³âÌåid
+ * @param timeout Èë²Î£¬»ñÈ¡µÄ³¬Ê±Ê±¼ä
+ * @return ³É¹¦£¬·µ»ØZOSS_SUCCESS£¬·ñÔò·µ»ØZOSS_ERROR
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note
+ * @warning
+ */
+UINT32 zOss_GetMutex(ZOSS_MUTEX_ID mutex_id, UINT32 timeout);
+
+/**
+ * @brief ÊÍ·Å»¥³âÌå
+ * @param mutex_id Èë²Î£¬´ýÊͷŵĻ¥³âÌåid
+ * @return Èô³É¹¦£¬·µ»ØZOSS_SUCCESS£»·ñÔòϵͳ¶ÏÑÔ
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note
+ * @warning
+ */
+UINT32 zOss_PutMutex(ZOSS_MUTEX_ID mutex_id);
+
+/**
+ * @brief Ïú»Ù»¥³âÌå
+ * @param mutex_id Èë²Î£¬´ýÏú»ÙµÄ»¥³âÌåid
+ * @return Èô³É¹¦£¬·µ»ØZOSS_SUCCESS£»·ñÔòϵͳ¶ÏÑÔ
+ * @retval ZOSS_SUCCESS ³É¹¦
+ * @retval ZOSS_ERROR ʧ°Ü
+ * @note
+ * @warning
+ */
+UINT32 zOss_DeleteMutex(ZOSS_MUTEX_ID mutex_id);
+
+/* ʱ¼ä */
+/**
+ * @brief »ñÈ¡²Ù×÷ϵͳµÄµ±Ç°µÎ´ðÊý
+ * @param void
+ * @return ·µ»Ø²Ù×÷ϵͳµÄµ±Ç°µÎ´ðÊý
+ * @retval µÎ´ðÊý
+ * @note
+ * @warning
+ */
+UINT32 zOss_GetTickCount(VOID);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+/* CPUʹÓÃÂÊͳ¼Æ */
+UINT8 zOss_GetCPU(VOID);
+
+/* Òì³£´¦Àí */
+VOID EXP_Handler(const CHAR *pExp, const CHAR *pcFileName, const CHAR *pcFuncName, SINT32 dwLineNum);
+
+#endif //#ifndef DOXYGEN_SHOULD_SKIP_THIS
+/*******************************************************************************
+ * Inline function implementations *
+ ******************************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // #ifndef _OSS_KERNEL_H
+