[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_clib.h b/cp/ps/plat/inc/oss/oss_clib.h
new file mode 100644
index 0000000..9e1c883
--- /dev/null
+++ b/cp/ps/plat/inc/oss/oss_clib.h
@@ -0,0 +1,279 @@
+/**
+ * @file oss_clib.h
+ * @brief C¿âÍ·Îļþ
+ *
+ * Copyright (C) 2017 Sanechips Technology Co., Ltd.
+ *
+ */
+#ifndef _OSS_CLIB_H
+#define _OSS_CLIB_H
+
+#define _USE_CLIB
+
+#ifdef _USE_CLIB
+/*******************************************************************************
+ * Include header files *
+ ******************************************************************************/
+#if defined (_OS_LINUX)
+#include <linux/kernel.h>
+#include <linux/slab.h>
+#include <linux/string.h>
+#else
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <time.h>
+#include <math.h>
+#include <ctype.h>
+#endif
+
+#ifdef _OS_WIN
+#include <stddef.h>
+#endif
+#include "oss_pub.h"
+#include "oss_compiler.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/*******************************************************************************
+ * Macro definitions *
+ ******************************************************************************/
+#ifdef _OS_LINUX
+/*
+ * stdio.h
+ */
+#define printf(fmt, ...) printk(fmt, ##__VA_ARGS__)
+
+/*
+ * random
+ */
+#define RAND_MAX (0x7FFFFFFF)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+# define srand(s) prandom_seed(s)
+# define rand() (prandom_u32() & RAND_MAX)
+#else
+# define srand(s) srandom32(s)
+# define rand() (random32() & RAND_MAX)
+#endif
+
+/*
+ * stdlib.h
+ */
+#define atol(nptr) simple_strtol(nptr, (char **)NULL, 10)
+#define atoi(nptr) simple_strtoul(nptr, (char **)NULL, 10)
+
+#define strtol simple_strtol
+#define strtoul simple_strtoul
+
+#define malloc(size) kmalloc(size, GFP_ATOMIC)
+#define free(ptr) kfree(ptr)
+
+/*
+ * assert.h
+ */
+#define assert(exp) zOss_ASSERT(exp)
+
+/*
+ * time
+ */
+#define settimeofday sys_settimeofday
+
+/*
+ * unistd.h
+ */
+#define exit(nr) do_exit(nr)
+
+#define zOss_Malloc(size) kmalloc(size, GFP_ATOMIC)
+#define zOss_MallocEx(size) kmalloc(size, GFP_KERNEL | __GFP_PAGEMODEM)
+#define zOss_Realloc(mem_ptr, new_size) krealloc(mem_ptr, new_size, GFP_ATOMIC)
+#define zOss_Free(mem_ptr) kfree(mem_ptr)
+#define zOss_Memcpy(dest_ptr, src_ptr, size) memcpy(dest_ptr, src_ptr, size)
+#define zOss_Memset(dest_ptr, value, size) memset(dest_ptr, value, size)
+
+#define zOss_Memmove(dest_ptr, src_ptr, count) memmove(dest_ptr, src_ptr, count)
+#define zOss_Memcmp(f_buf_ptr, s_buf_ptr, count) memcmp(f_buf_ptr, s_buf_ptr, count)
+
+#else
+/**
+ * @brief ¶¯Ì¬ÉêÇëÄڴ溯Êýºê
+ * @param size Èë²Î£¬ÉêÇëÄÚ´æµÄ´óС
+ * @return ³É¹¦·µ»Ø·ÖÅäµÄÄÚ´æÖ¸Õ룬ʧ°Ü·µ»Ø¿ÕÖ¸Õë
+ * @retval void*ÀàÐ͵ÄÖ¸Õë ³É¹¦
+ * @retval NULL ʧ°Ü
+ */
+#define zOss_Malloc(size) mem_malloc(size, ZOSS_FILE, ZOSS_LINE)
+
+/**
+ * @brief ¶¯Ì¬ÄÚ´æµ÷Õûº¯Êýºê
+ * @param mem_ptr Èë²Î£¬Òªµ÷ÕûµÄÄÚ´æÖ¸Õë
+ * @param new_size Èë²Î£¬Òªµ÷ÕûµÄÄÚ´æ´óС
+ * @return ³É¹¦·µ»Øµ÷ÕûºóµÄÄÚ´æÖ¸Õ룬ʧ°Ü·µ»Ø¿ÕÖ¸Õë
+ * @retval void*ÀàÐ͵ÄÖ¸Õë ³É¹¦
+ * @retval NULL ʧ°Ü
+ */
+#define zOss_Realloc(mem_ptr, new_size) mem_re_alloc(mem_ptr, new_size, ZOSS_FILE, ZOSS_LINE)
+
+/**
+ * @brief ÊÍ·ÅÄڴ溯Êýºê
+ * @param mem_ptr Èë²Î£¬ÒªÊͷŵÄÄÚ´æÖ¸Õë
+ * @return void
+ */
+#define zOss_Free(mem_ptr) mem_free_extend(mem_ptr, ZOSS_FILE, ZOSS_LINE)
+
+/**
+ * @brief Äڴ濽±´º¯Êýºê
+ * @param dest_ptr Èë²Î£¬Ä¿±êÄÚ´æÖ¸Õë
+ * @param src_ptr Èë²Î£¬Ô´ÄÚ´æÖ¸Õë
+ * @param size Èë²Î£¬Òª¿½±´µÄ´óС
+ * @return ·µ»Ødest_ptrµÄÖ¸Õë
+ */
+#define zOss_Memcpy(dest_ptr, src_ptr, size) mem_memcpy(dest_ptr, src_ptr, size, ZOSS_FILE, ZOSS_LINE)
+
+/**
+ * @brief ÄÚ´æ³õʼ»¯º¯Êýºê
+ * @param dest_ptr Èë²Î£¬Òª³õʼ»¯µÄÄ¿±êÄÚ´æÖ¸Õë
+ * @param value Èë²Î£¬³õʼ»¯µÄÖµ
+ * @param size Èë²Î£¬³õʼ»¯µÄÄÚ´æ´óС
+ * @return ·µ»Ø±»³õʼ»¯ÄÚ´æµÄÖ¸Õ루void*£©
+ */
+#define zOss_Memset(dest_ptr, value, size) mem_memset(dest_ptr, value, size, ZOSS_FILE, ZOSS_LINE)
+
+/**
+ * @brief ÄÚ´æ°áÒÆ
+ * @param dest_ptr Èë²Î£¬Òª°áÒÆµÄÄ¿±êÄÚ´æÖ¸Õë
+ * @param src_ptr Èë²Î£¬°áÒÆµÄÔ´ÄÚ´æÖ¸Õë
+ * @param count Èë²Î£¬°áÒÆÄÚ´æ´óС
+ * @return ·µ»Ødest_ptrµÄÖ¸Õë
+ */
+#define zOss_Memmove(dest_ptr, src_ptr, count) mem_memmove(dest_ptr, src_ptr, count)
+
+/**
+ * @brief ÄÚ´æ±È½Ïº¯Êýºê
+ * @param f_buf_ptr Èë²Î£¬Òª±È½ÏµÄÒ»·½ÄÚ´æÖ¸Õë
+ * @param s_buf_ptr Èë²Î£¬Òª±È½ÏµÄÁíÒ»·½ÄÚ´æÖ¸Õë
+ * @param count Èë²Î£¬Òª±È½ÏµÄÄÚ´æ´óС
+ * @return Ïàͬ·µ»Ø0£¬·ñÔò²»Ïàͬ
+ */
+#define zOss_Memcmp(f_buf_ptr, s_buf_ptr, count) mem_memcmp(f_buf_ptr, s_buf_ptr, count)
+
+#endif
+
+/*******************************************************************************
+ * Type definitions *
+ ******************************************************************************/
+
+/**
+ * @brief ZOSS_TIME_TµÄÀàÐͶ¨Òå
+ */
+typedef UINT32 ZOSS_TIME_T;
+
+/*******************************************************************************
+ * Global variable declarations *
+ ******************************************************************************/
+
+
+/*******************************************************************************
+ * Global function declarations *
+ ******************************************************************************/
+/**
+ * @brief ·µ»Ø´Ó¹«Ôª1970Äê1ÔÂ1ÈÕµÄUTCʱ¼ä´Ó0ʱ0·Ö0ÃëËãÆðµ½ÏÖÔÚËù¾¹ýµÄÃëÊý
+ * @param t ³ö²Î£¬±£´æ´Ó¹«Ôª1970Äê1ÔÂ1ÈÕµÄUTCʱ¼ä´Ó0ʱ0·Ö0ÃëËãÆðµ½ÏÖÔÚËù¾¹ýµÄ
+ ÃëÊý£¬¸Ã²ÎÊý¿ÉΪNULL
+ * @return ´Ó¹«Ôª1970Äê1ÔÂ1ÈÕµÄUTCʱ¼ä´Ó0ʱ0·Ö0ÃëËãÆðµ½ÏÖÔÚËù¾¹ýµÄÃëÊý
+ * @note
+ * @warning
+ */
+ZOSS_TIME_T zOss_Time(ZOSS_TIME_T *t);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+VOID *zOss_CacheMalloc(UINT32 size);
+
+VOID zOss_CacheFree(VOID *ptr);
+
+/* ÕûÊýת³É×Ö·û */
+char *itoa(int num, char *str, int radix);
+
+/*******************************************************************************
+ * Inline function implementations *
+ ******************************************************************************/
+#if defined(_MEM_USE_HEAP)
+
+#if defined (_OS_TOS)
+static inline VOID *mem_malloc(UINT32 size, const CHAR *file, UINT32 line)
+{
+ return (VOID *)tos_heap_alloc(size, file, line);
+}
+
+static inline VOID *mem_re_alloc(VOID *mem_ptr, UINT32 new_size, const CHAR *file, UINT32 line)
+{
+ return (VOID *)tos_heap_realloc(mem_ptr, new_size, file, line);
+}
+
+static inline VOID mem_free_extend(VOID *mem_ptr, const CHAR *file, UINT32 line)
+{
+ (VOID)tos_heap_free(mem_ptr, file, line);
+}
+#elif defined (_OS_LINUX)
+static inline VOID *mem_malloc(UINT32 size, const CHAR *file, UINT32 line)
+{
+ return (VOID *)kmalloc(size, GFP_KERNEL);
+}
+
+static inline VOID *mem_re_alloc(VOID *mem_ptr, UINT32 new_size, const CHAR *file, UINT32 line)
+{
+ return (VOID *)krealloc(mem_ptr, new_size, GFP_KERNEL);
+}
+
+static inline VOID mem_free_extend(VOID *mem_ptr, const CHAR *file, UINT32 line)
+{
+ (VOID)kfree(mem_ptr);
+}
+#endif
+
+static inline VOID *mem_memcpy(VOID *dest_ptr, const VOID *src_ptr, UINT32 size, const CHAR *file, UINT32 line)
+{
+ return memcpy(dest_ptr, src_ptr, size);
+}
+
+static inline VOID *mem_memset(VOID *dest_ptr, SINT32 value, UINT32 size, const CHAR *file, UINT32 line)
+{
+ return memset(dest_ptr, value, size);
+}
+
+static inline VOID *mem_memmove(VOID *dest_ptr, const VOID *src_ptr, UINT32 count)
+{
+ return memmove(dest_ptr, src_ptr, count);
+}
+
+static inline SINT32 mem_memcmp(const VOID *f_buf_ptr, const VOID *s_buf_ptr, UINT32 count)
+{
+ return memcmp(f_buf_ptr, s_buf_ptr, count);
+}
+
+#else
+
+VOID *mem_malloc(UINT32 size, const CHAR *file, UINT32 line);
+VOID *mem_re_alloc(VOID *mem_ptr, UINT32 new_size, const CHAR *file, UINT32 line);
+VOID mem_free_extend(VOID *mem_ptr, const CHAR *file, UINT32 line);
+VOID *mem_memcpy(VOID *dest_ptr, const VOID *src_ptr, UINT32 size, const CHAR *file, UINT32 line);
+VOID *mem_memset(VOID *dest_ptr, SINT32 value, UINT32 size, const CHAR *file, UINT32 line);
+VOID *mem_memmove(VOID *dest_ptr, const VOID *src_ptr, UINT32 count);
+SINT32 mem_memcmp(const VOID *f_buf_ptr, const VOID *s_buf_ptr, UINT32 count);
+
+#endif
+
+#endif//#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //#ifdef _USE_CLIB
+
+#endif //#ifndef _OSS_CLIB_H
+