[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;                              /* µ÷ÊÔÏß³ÌµÇ¼Ç±í           */

+    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

+