zte's code,first commit
Change-Id: I9a04da59e459a9bc0d67f101f700d9d7dc8d681b
diff --git a/cp/ps/driver/src/public/inc/ring_queue.h b/cp/ps/driver/src/public/inc/ring_queue.h
new file mode 100644
index 0000000..1da1af3
--- /dev/null
+++ b/cp/ps/driver/src/public/inc/ring_queue.h
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (C) 2007, ZTE Corporation.
+ *
+ * File Name:ring_queue.h
+ * File Mark:
+ * Description:
+ * Others:
+ * Version: 1.0
+ * Author: geanfeng
+ * Date: 2013-09-25
+ * History 1:
+ * Date:
+ * Version:
+ * Author:
+ * Modification:
+ * History 2:
+ ********************************************************************************/
+
+#ifndef _RING_QUEUE_H
+#define _RING_QUEUE_H
+
+/****************************************************************************
+* Include files
+****************************************************************************/
+#include "drvs_general.h"
+/****************************************************************************
+* Macros
+****************************************************************************/
+
+/****************************************************************************
+* Types
+****************************************************************************/
+typedef enum _T_USER_PROTECT_POLICY {
+ QUEUE_PROTECT_RAW = 0,
+ QUEUE_PROTECT_MUTEX,
+ QUEUE_PROTECT_IRQ,
+}T_USER_PROTECT_POLICY;
+
+typedef struct _T_Ring_Queue {
+ UINT8 *unit_buffer;
+ UINT32 unit_buffer_size;
+ UINT32 unit_size;
+ UINT32 unit_count;
+ UINT32 write_pos;
+ UINT32 read_pos;
+
+ T_USER_PROTECT_POLICY multi_user_protect;
+ ZOSS_SEMAPHORE_ID lock;
+}T_Ring_Queue;
+
+/****************************************************************************
+* Constants
+****************************************************************************/
+
+/****************************************************************************
+* Global Variables
+****************************************************************************/
+
+/****************************************************************************
+* Function Prototypes
+****************************************************************************/
+T_Ring_Queue *ringQueue_Create(UINT32 unit_count, UINT32 unit_size, T_USER_PROTECT_POLICY multi_user_protect);
+
+SINT32 ringQueue_Init(T_Ring_Queue *queue, UINT8 *unit_buffer,
+ UINT32 unit_count, UINT32 unit_size, T_USER_PROTECT_POLICY protect_policy);
+
+SINT32 ringQueue_Enqueue(T_Ring_Queue *queue, VOID *unit);
+
+SINT32 ringQueue_Dequeue(T_Ring_Queue *queue, VOID *unit);
+
+SINT32 ringQueue_Empty(T_Ring_Queue *queue);
+
+SINT32 ringQueue_Full(T_Ring_Queue *queue);
+
+VOID ringQueue_Fush(T_Ring_Queue *queue);
+
+VOID ringQueue_Destroy(T_Ring_Queue *queue);
+
+
+#endif/*_RING_QUEUE_H*/
+