--- /dev/null
+#ifndef _CMMB_AV_MEMORY_H_\r
+#define _CMMB_AV_MEMORY_H_\r
+\r
+#include <linux/module.h>\r
+#include <linux/interrupt.h>\r
+//#include <asm/semaphore.h>\r
+#include <linux/mutex.h>\r
+#include "cmmb_ringbuffer.h"\r
+\r
+\r
+#define CMMB_MEMO_WRITE (0x80000001)\r
+#define CMMB_MEMO_READ (0x80000002)\r
+#define CMMB_MEMO_FLUSH_ONE (0x80000003)\r
+#define CMMB_MEMO_FLUSH_ALL (0x80000004)\r
+#define CMMB_MEMO_INIT (0x80000005)\r
+#define CMMB_SET_VIDEO_TYPE (0x80000006)\r
+#define CMMB_SET_AUDIO_TYPE (0x80000007)\r
+#define CMMB_SET_AUDIO_SAMPLE (0x80000008)\r
+#define CMMB_GET_VIDEO_TYPE (0x80000009)\r
+#define CMMB_GET_AUDIO_TYPE (0x8000000a)\r
+#define CMMB_GET_AUDIO_SAMPLE (0x8000000b)\r
+#define CMMB_GET_BUFF_FREE (0x8000000c)\r
+#define CMMB_GET_BUFF_AVAIL (0x8000000d)\r
+\r
+\r
+struct cmmb_memory\r
+{\r
+ int w_datatype;\r
+ int r_datatype;\r
+ unsigned long videotype;\r
+ unsigned long audiotype;\r
+ unsigned long audiosample;\r
+ int usr;\r
+\r
+ struct device *device;\r
+ struct file_operations* fops;\r
+ struct dvb_ringbuffer buffer_Video;\r
+ struct dvb_ringbuffer buffer_Audio;\r
+ struct dvb_ringbuffer buffer_Data;\r
+ u8 *video_buf; \r
+ u8 *audio_buf; \r
+ u8 *data_buf; \r
+ \r
+ #define CMMB_VIDEO_TYPE 0\r
+ #define CMMB_AUDIO_TYPE 1\r
+ #define CMMB_DATA_TYPE 2\r
+ #define CMMB_NULL_TYPE 3\r
+ \r
+ #define CMMB_VIDEO_BUFFER_SIZE (512*1024)\r
+ #define CMMB_AUDIO_BUFFER_SIZE (64*1024)\r
+ #define CMMB_DATA_BUFFER_SIZE (1*1024)\r
+\r
+ struct mutex mutex;\r
+ //struct semaphore sem;\r
+ spinlock_t lock;\r
+ wait_queue_head_t rqueue;\r
+ void* priv;\r
+};\r
+\r
+\r
+\r
+#endif/*_CMMBMEMORY_H_*/\r
+\r
+\r