[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_mem.h b/cp/ps/plat/inc/oss/oss_mem.h
new file mode 100644
index 0000000..0c5383c
--- /dev/null
+++ b/cp/ps/plat/inc/oss/oss_mem.h
@@ -0,0 +1,195 @@
+/**************************************************************************

+*

+*                  Copyright (c) 2012 ZTE Corporation.

+*

+***************************************************************************

+* Ä£ ¿é Ãû : P98C_OSS

+* ÎÄ ¼þ Ãû : oss_mem.h

+* Ïà¹ØÎļþ : 

+* ʵÏÖ¹¦ÄÜ : ÄÚ´æÉêÇë¡¢ÊͷŽӿÚ

+* ×÷    Õß : chenxingfang

+* °æ    ±¾ : V1.0

+* Íê³ÉÈÕÆÚ : 2012-08-10 

+* ÆäËü˵Ã÷ : 

+**************************************************************************/

+

+/**************************************************************************

+* Ð޸ļǼ

+**************************************************************************/

+#ifndef _OSS_MEM_H

+#define _OSS_MEM_H

+

+/**************************************************************************

+* #includeÇø

+**************************************************************************/

+#ifdef _OS_TOS

+#include "tos_pool.h"

+#include "tos_heap.h"

+#elif defined _OS_LINUX

+#include "oss_pool.h"

+#include "linux/mm.h"

+#endif

+#include "oss_pub.h"

+

+#ifdef __cplusplus

+extern "C"

+{

+#endif

+

+/**************************************************************************

+* ³£Á¿¶¨ÒåÇø

+**************************************************************************/

+/* UB */

+#define zOss_GetUB(size)            mem_getub(size, ZOSS_FILE, ZOSS_LINE)

+#define zOss_RetUB(msg_ptr)         mem_retub(msg_ptr, ZOSS_FILE, ZOSS_LINE)

+

+/* UBÄÚ´æÅäÖòÎÊý */

+#define MEM_MAX_LEAK_UB             200     /* ÄÚ´æÐ¹Â¶²éѯ·µ»ØµÄ×î´óÌõÊý   */ 

+#define ZOSS_UB_MAX_POOLNUM         15      /* ÄÚ´æ³Ø¸öÊý, ×î´ó²»Äܳ¬¹ý255  */

+#define ZOSS_UBHEAD_FILENAME_LEN    31      /* UBÄÚ´æÉêÇëÎļþÃû             */

+

+/**************************************************************************

+* Êý¾Ý½á¹¹¶¨ÒåÇø

+**************************************************************************/

+typedef VOID *ZOSS_UB_BLOCK;    /* ÄÚ´æ¿éµØÖ·Ö¸Õë */

+

+typedef struct 

+{

+    UINT32 nMemUsed;            /* ÒÑʹÓÃÄÚ´æ´óС£¬ÒÔ×Ö½Ú±íʾ   */

+    UINT32 nMemTotal;           /* ÄÚ´æ×ܵĴóС£¬ÒÔ×Ö½Ú±íʾ     */

+    UINT32 nMemMaxFree;			/* ¿ÉÒÔÉêÇëµÄ×î´óÄÚ´æ           */

+}T_Mem_MemInfo;              /* ÄÚ´æ»ù±¾ÐÅÏ¢                 */

+

+typedef struct 

+{

+    UINT32  pool_size;          /* ÄÚ´æ³Ø´óС,µ¥Î»Îªbyte    */

+    UINT32  total_block_num;    /* Ô¤¶¨ÄÚ´æ¿éÊýÄ¿           */

+}T_ZOss_UBPOOL;              /* ÄÚ´æ³ØÅäÖÃ±í             */

+

+typedef struct 

+{

+    UINT32  pool_size;          /* ÄÚ´æ³Ø´óС,µ¥Î»Îªbyte    */

+    UINT16  total_block_num;    /* ÄÚ´æ¿é×ÜÊýÄ¿             */

+    UINT16  free_block_num;     /* ¿ÕÏÐÄÚ´æ¿éÊýÄ¿           */

+    UINT32  peak_value;         /* ÄÚ´æ¿é×î´óʹÓøöÊý       */

+}T_Mem_UBPoolInfo;          /* ÄÚ´æ³ØÐÅÏ¢               */

+

+typedef struct 

+{

+    ZOSS_UB_BLOCK   ubBlock;                            /* ÄÚ´æ¿éÖ¸Õë               */

+    UINT32          ubBlockSize;                        /* ÄÚ´æ¿é´óС,µ¥Î»Îªbyte    */

+    UINT32          usingSize;                          /* ʵ¼ÊÕ¼ÓôóС             */

+    CHAR            name[ZOSS_UBHEAD_FILENAME_LEN + 1]; /* ÉêÇëλÖÃÎļþÃû           */

+    UINT32          line;                               /* ÉêÇëλÖÃÐкŠ            */

+    ZOSS_THREAD_ID  threadId;                           /* ÉêÇëÏß³ÌID               */

+    ZOSS_TASK_ID    taskId;                             /* ÉêÇëÈÎÎñºÅ               */

+    UINT32          applyTimeTick;                      /* ÉêÇëʱ¼ä(TICK)           */

+}T_Mem_UBBlockInfo;                                 /* й¶ÄÚ´æ¿éÄÚ´æÍ·ÐÅÏ¢     */

+

+typedef struct 

+{

+    UINT8               pool_num;   /* ÄÚ´æ³Ø×ÜÊý   */

+    T_Mem_UBPoolInfo    pool_info[ZOSS_UB_MAX_POOLNUM];

+}T_Mem_UBPoolGrpInfo;           /* ÄÚ´æ³Ø×ÜÐÅÏ¢ */

+ 

+typedef struct 

+{

+    UINT16              ub_leak_num;    /* ÄÚ´æÐ¹Â¶ÊýÄ¿,×î´óΪMEM_MAX_LEAK_UB   */

+    T_Mem_UBBlockInfo   ubHeadInfo[MEM_MAX_LEAK_UB];

+}T_Mem_UBLeakInfo;                  /* ÄÚ´æÐ¹Â¶ÐÅÏ¢                         */

+

+/**************************************************************************

+* º¯ÊýÉùÃ÷Çø

+**************************************************************************/    

+#ifdef _OS_LINUX

+

+#if defined(_UB_USE_HEAP_DEBUG)

+extern void *ub_debug_alloc(unsigned long size, const char *file, unsigned long line);

+extern void ub_debug_free(void *ptr);

+static inline VOID *mem_getub(UINT32 size, const CHAR *file, UINT32 line)

+{

+	return ub_debug_alloc(size, file, line);

+}

+static inline UINT32 mem_retub(VOID *msg_ptr, const CHAR *file, UINT32 line)

+{

+	ub_debug_free(msg_ptr);

+

+    return ZOSS_SUCCESS;

+}

+#elif defined(_UB_USE_HEAP)

+static inline VOID *mem_getub(UINT32 size, const CHAR *file, UINT32 line)

+{

+	//zOss_ASSERT(PAGE_SIZE == 4096);

+	if(size <= PAGE_SIZE)

+		return kmalloc(size, GFP_KERNEL);

+	else

+		return vmalloc(size);

+}

+static inline UINT32 mem_retub(VOID *msg_ptr, const CHAR *file, UINT32 line)

+{

+	if(!is_vmalloc_addr(msg_ptr))

+		kfree(msg_ptr);

+	else

+		vfree(msg_ptr);

+

+    return ZOSS_SUCCESS;

+}

+#elif defined(_UB_USE_POOL)

+static inline VOID *mem_getub(UINT32 size, const CHAR *file, UINT32 line)

+{

+    return pool_alloc(size, file, line);

+}

+static inline UINT32 mem_retub(VOID *msg_ptr, const CHAR *file, UINT32 line)

+{

+    pool_free(msg_ptr, file, line);

+    return ZOSS_SUCCESS;

+}

+#endif

+

+#else

+

+#if defined(_UB_USE_HEAP)

+static inline VOID *mem_getub(UINT32 size, const CHAR *file, UINT32 line)

+{

+    return tos_heap_alloc(size, file, line);

+}

+static inline UINT32 mem_retub(VOID *msg_ptr, const CHAR *file, UINT32 line)

+{

+    tos_heap_free(msg_ptr, file, line);

+    return ZOSS_SUCCESS;

+}

+#elif defined(_UB_USE_POOL)

+static inline VOID *mem_getub(UINT32 size, const CHAR *file, UINT32 line)

+{

+    return pool_alloc(size, file, line);

+}

+static inline UINT32 mem_retub(VOID *msg_ptr, const CHAR *file, UINT32 line)

+{

+    pool_free(msg_ptr, file, line);

+    return ZOSS_SUCCESS;

+}

+#else

+VOID *mem_getub(UINT32 size, const CHAR *file, UINT32 line);

+UINT32 mem_retub(VOID *msg_ptr, const CHAR *file, UINT32 line);

+#endif

+

+#endif  // #ifdef _OS_LINUX

+

+FLOAT zOss_GetUBFreeRate(UINT32 ubSize);

+VOID zOss_MemLeakStart(UINT32 leak_threadhold);

+VOID zOss_MemLeakEnd(VOID);

+VOID zOss_CheckMem(VOID);

+VOID zOss_SetUbDbgSwitch(UINT32 dbgFlag);

+BOOL zOss_GetMemInitState(VOID);

+UINT32 zOss_GetSysMemInfo(T_Mem_MemInfo *mem_info);

+

+/**************************************************************************

+* È«¾Ö±äÁ¿ÉùÃ÷Çø

+**************************************************************************/

+

+#ifdef __cplusplus

+}

+#endif

+

+#endif  /* _OSS_MEM_H */

+