#include <linux/errno.h>\r
#include <linux/workqueue.h>\r
#include <asm/atomic.h>\r
-\r
+#include <linux/vmalloc.h> \r
#if 1\r
#define DBGERR(x...) printk(KERN_INFO x)\r
#else\r
cmmb_memo->usr--;\r
\r
if(cmmb_memo->usr == 0){\r
- kfree(cmmb_memo->video_buf);\r
- kfree(cmmb_memo->audio_buf);\r
- kfree(cmmb_memo->data_buf);\r
+ vfree(cmmb_memo->video_buf);\r
+ vfree(cmmb_memo->audio_buf);\r
+ vfree(cmmb_memo->data_buf);\r
mutex_unlock(&cmmb_memo->mutex);\r
DBG("[CMMB HW]:[memory]: enter cmmb av memory release free buffer\n");\r
} else{\r
cmmbmemo->audio_buf = NULL;\r
cmmbmemo->data_buf = NULL;\r
\r
- cmmbmemo->video_buf = kmalloc(CMMB_VIDEO_BUFFER_SIZE+1, GFP_KERNEL);\r
+ //cmmbmemo->video_buf = vmalloc(CMMB_VIDEO_BUFFER_SIZE+1, GFP_KERNEL);\r
+ cmmbmemo->video_buf = vmalloc(CMMB_VIDEO_BUFFER_SIZE+1);\r
\r
if (cmmbmemo->video_buf == NULL){\r
ret = - ENOMEM;\r
goto kmalloc_fail;\r
}\r
\r
- cmmbmemo->audio_buf = kmalloc(CMMB_AUDIO_BUFFER_SIZE+1, GFP_KERNEL);\r
-\r
+ //cmmbmemo->audio_buf = vmalloc(CMMB_AUDIO_BUFFER_SIZE+1, GFP_KERNEL);\r
+ cmmbmemo->audio_buf = vmalloc(CMMB_AUDIO_BUFFER_SIZE+1);\r
+ \r
+ \r
if (cmmbmemo->audio_buf == NULL){\r
ret = - ENOMEM;\r
DBGERR("[CMMB HW]:[memory]:[err]: cmmb audio buffer malloc fail!!!\n");\r
goto kmalloc_fail;\r
}\r
\r
- cmmbmemo->data_buf = kmalloc(1, GFP_KERNEL);\r
+ cmmbmemo->data_buf = vmalloc(1);\r
\r
if (cmmbmemo->data_buf == NULL){\r
ret = - ENOMEM;\r
return ret;\r
\r
kmalloc_fail:\r
- kfree(cmmbmemo->video_buf);\r
- kfree(cmmbmemo->audio_buf);\r
- kfree(cmmbmemo->data_buf);\r
+ vfree(cmmbmemo->video_buf);\r
+ vfree(cmmbmemo->audio_buf);\r
+ vfree(cmmbmemo->data_buf);\r
mutex_unlock(&cmmbmemo->mutex); \r
return ret; \r
}\r
ret = cmmb_ringbuffer_write(&cmmbmemo->buffer_Video, buf, count);\r
}
//cmmbmemo->w_datatype = CMMB_NULL_TYPE;\r
+#if 0\r
spin_lock(cmmbmemo->buffer_Video.lock);\r
cmmbmemo->buffer_Video.condition = 1;\r
spin_unlock(cmmbmemo->buffer_Video.lock);\r
wake_up_interruptible(&cmmbmemo->buffer_Video.queue);\r
+#endif\r
}else if (cmmbmemo->w_datatype == CMMB_AUDIO_TYPE){\r
free_A = cmmb_ringbuffer_free(&cmmbmemo->buffer_Audio);\r
if (free_A >= count){\r
ret = cmmb_ringbuffer_write(&cmmbmemo->buffer_Audio, buf, count);\r
}\r
//cmmbmemo->w_datatype = CMMB_NULL_TYPE;\r
+#if 0\r
spin_lock(cmmbmemo->buffer_Audio.lock);\r
cmmbmemo->buffer_Audio.condition = 1;\r
spin_unlock(cmmbmemo->buffer_Audio.lock);\r
- wake_up_interruptible(&cmmbmemo->buffer_Audio.queue);\r
+#endif\r
+ //wake_up_interruptible(&cmmbmemo->buffer_Audio.queue);\r
}else if(cmmbmemo->w_datatype == CMMB_DATA_TYPE){\r
free_D = cmmb_ringbuffer_free(&cmmbmemo->buffer_Data);\r
if (free_D >= count){\r
ret = cmmb_ringbuffer_write(&cmmbmemo->buffer_Data, buf, count);\r
}\r
//cmmbmemo->w_datatype = CMMB_NULL_TYPE;\r
+#if 0\r
spin_lock(cmmbmemo->buffer_Data.lock);\r
cmmbmemo->buffer_Data.condition = 1;\r
spin_unlock(cmmbmemo->buffer_Data.lock);\r
- wake_up_interruptible(&cmmbmemo->buffer_Data.queue);\r
+#endif\r
+ //wake_up_interruptible(&cmmbmemo->buffer_Data.queue);\r
}\r
\r
return ret;\r