[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit
Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/cp/ps/driver/src/public/inc/qalloc.h b/cp/ps/driver/src/public/inc/qalloc.h
new file mode 100644
index 0000000..98ab2b4
--- /dev/null
+++ b/cp/ps/driver/src/public/inc/qalloc.h
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (C) 2007, ZTE Corporation.
+ *
+ * File Name:hal_qalloc.h
+ * File Mark:
+ * Description:
+ * Others:
+ * Version: 1.0
+ * Author: geanfeng
+ * Date: 2013-09-25
+ * History 1:
+ * Date:
+ * Version:
+ * Author:
+ * Modification:
+ * History 2:
+ ********************************************************************************/
+
+#ifndef _HAL_QALLOC_H
+#define _HAL_QALLOC_H
+
+
+/****************************************************************************
+* Include files
+****************************************************************************/
+#include "drvs_general.h"
+#include "drvs_list.h"
+/****************************************************************************
+* Macros
+****************************************************************************/
+
+/****************************************************************************
+* Types
+****************************************************************************/
+/*
+ * General purpose special memory pool descriptor.
+ */
+typedef struct _T_Quick_Pool {
+ struct list_head node; /* node*/
+ struct list_head chunks; /* list of chunks in this pool */
+ UINT32 count;
+ UINT8* name;
+}T_Quick_Pool;
+
+/****************************************************************************
+* Constants
+****************************************************************************/
+
+/****************************************************************************
+* Global Variables
+****************************************************************************/
+
+/****************************************************************************
+* Function Prototypes
+****************************************************************************/
+
+/**
+ * QPool_Create - create a new special memory pool
+*
+ * Create a new special memory pool that can be used to manage special purpose
+ * memory not managed by the regular kmalloc/kfree interface.
+ */
+T_Quick_Pool *QPool_Create(UINT8* name);
+
+/**
+ * QPool_AddVirt - add a new chunk of special memory to the pool
+ * @pool: pool to add new memory chunk to
+ * @virt: virtual starting address of memory chunk to add to pool
+ * @phys: physical starting address of memory chunk to add to pool
+ * @size: size in bytes of the memory chunk to add to pool
+ *
+ * Add a new chunk of special memory to the specified pool.
+ *
+ * Returns 0 on success or a -ve errno on failure.
+ */
+SINT32 QPool_AddVirt(T_Quick_Pool *pool,UINT32 virt, UINT32 size,
+ UINT32 page_size, UINT32 max_alloc_order);
+
+/**
+ * QPool_Alloc - allocate special memory from the pool
+ * @pool: pool to allocate from
+ * @size: number of bytes to allocate from the pool
+ * @debug_info: some debug info
+ *
+ * Allocate the requested number of bytes from the specified pool.
+ * Uses a first-fit algorithm.
+ */
+UINT32 QPool_Alloc(T_Quick_Pool *pool, UINT32 size, VOID *debug_info);
+
+/**
+ * QPool_Free - free allocated special memory back to the pool
+ * @pool: pool to free to
+ * @addr: starting address of memory to free back to pool
+ * @size: size in bytes of memory to free
+ *
+ */
+VOID QPool_Free(T_Quick_Pool *pool, UINT32 addr, VOID *debug_info);
+
+/**
+ * QPool_Destroy - destroy a special memory pool
+ *
+ * Destroy the specified special memory pool. Verifies that there are no
+ * outstanding allocations.
+ */
+VOID QPool_Destroy(T_Quick_Pool *pool);
+
+/**
+ * gen_pool_avail - get available free space of the pool
+ * @pool: pool to get available free space
+ *
+ * Return available free space of the specified pool.
+ */
+UINT32 QPool_Avail(T_Quick_Pool *pool);
+
+/**
+ * QPool_Size - get size in bytes of memory managed by the pool
+ * @pool: pool to get size
+ *
+ * Return size in bytes of memory managed by the pool.
+ */
+UINT32 QPool_Size(T_Quick_Pool *pool);
+
+/**
+ * QPool_Print - print the pool debug info.
+ * @pool: pool to print
+ *
+ */
+VOID QPool_Print(T_Quick_Pool *pool);
+
+/**
+ * QPool_PrintAll - print the all pool debug info.
+ *
+ */
+VOID QPool_PrintAll(VOID);
+
+#endif/*_HAL_TCLK_REG_H*/
+