v4l: videobuf update
PATCH 1/1 v4l: videobuf update
Hi,
This is a minor update for the video-buf module. It does export the videobuf_next_field symbol and adds a few debug printks.
Gerd
drivers/media/video/video-buf.c +32 -12
@@ -16,6 +16,7 @@* (at your option) any later version. */ +#include <linux/version.h> #include <linux/init.h> #include <linux/module.h> #include <linux/vmalloc.h>
@@ -362,21 +363,33 @@ {int i; -if (q->reading) +if (q->streaming) { +dprintk (1 ,"busy: streaming active\n" );return 1 ; -if (q->streaming) + } +if (q->reading) { +dprintk (1 ,"busy: pending read #1\n" );return 1 ; -if (q->read_buf) + } +if (q->read_buf) { +dprintk (1 ,"busy: pending read #2\n" );return 1 ; + }for (i =0 ; i <VIDEO_MAX_FRAME ; i++) {if (NULL == q->bufs[i])continue ; -if (q->bufs[i]->map) +if (q->bufs[i]->map) { +dprintk (1 ,"busy: buffer #%d mapped\n" ,i);return 1 ; -if (q->bufs[i]->state ==STATE_QUEUED ) + } +if (q->bufs[i]->state ==STATE_QUEUED ) { +dprintk (1 ,"busy: buffer #%d queued\n" ,i);return 1 ; -if (q->bufs[i]->state ==STATE_ACTIVE ) + } +if (q->bufs[i]->state ==STATE_ACTIVE ) { +dprintk (1 ,"busy: buffer #%d active\n" ,i);return 1 ; + } }return 0 ; }
@@ -569,7 +582,7 @@if (list_empty (&q->stream)) goto done; buf = list_entry(q->stream.next, struct videobuf_buffer, stream); - retval =videobuf_waiton (buf,1 ,1 ); + retval =videobuf_waiton (buf, file->f_flags &O_NONBLOCK ,1 );if (retval <0 ) goto done;switch (buf->state) {
@@ -925,6 +938,9 @@ videobuf_vm_open(struct vm_area_struct *vma) {struct videobuf_mapping *map = vma->vm_private_data; + +dprintk (2 ,"vm_open %p [count=%d,vma=%08lx-%08lx]\n" ,map, + map->count,vma->vm_start,vma->vm_end); map->count++; }
@@ -934,6 +950,9 @@struct videobuf_mapping *map = vma->vm_private_data;int i; +dprintk (2 ,"vm_close %p [count=%d,vma=%08lx-%08lx]\n" ,map, + map->count,vma->vm_start,vma->vm_end); +/* down(&fh->lock); FIXME */ map->count--;if (0 == map->count) {
@@ -1081,11 +1100,11 @@ q->bufs[i]->map = map; q->bufs[i]->baddr = vma->vm_start + size; } - map->count =1 ; - map->start = vma->vm_start; - map->end = vma->vm_end; - map->q = q; - vma->vm_ops = &videobuf_vm_ops; + map->count =1 ; + map->start = vma->vm_start; + map->end = vma->vm_end; + map->q = q; + vma->vm_ops = &videobuf_vm_ops; vma->vm_flags |=VM_DONTEXPAND ; vma->vm_flags &= ~VM_IO ;/* using shared anonymous pages */ vma->vm_private_data = map;
@@ -1119,6 +1138,7 @@EXPORT_SYMBOL_GPL (videobuf_queue_cancel);EXPORT_SYMBOL_GPL (videobuf_queue_is_busy); +EXPORT_SYMBOL_GPL (videobuf_next_field);EXPORT_SYMBOL_GPL (videobuf_status);EXPORT_SYMBOL_GPL (videobuf_reqbufs);EXPORT_SYMBOL_GPL (videobuf_querybuf);
include/media/video-buf.h +1 -0
@@ -196,6 +196,7 @@int videobuf_queue_is_busy (struct videobuf_queue *q);void videobuf_queue_cancel (struct file *file,struct videobuf_queue *q); +enum v4l2_field videobuf_next_field (struct videobuf_queue *q);void videobuf_status (struct v4l2_buffer *b,struct videobuf_buffer *vb,enum v4l2_buf_type type); int videobuf_reqbufs(struct file *file, struct videobuf_queue *q,
Signature · 1 line
Michael Moore for president!
Quoted 12 lines · Gerd Knorr
Hi,
This is a minor update for the video-buf module. It does export the
videobuf_next_fieldsymbol and adds a few debug printks.Gerd
diff -u
linux-2.5.66/drivers/media/video/video-buf.clinux/drivers/media/video/video-buf.c
drivers/media/video/video-buf.c line 19
Quoted 4 lines
drivers/media/video/video-buf.c +1
-0@@ -16,6 +16,7 @@* (at your option) any later version. */ +#include <linux/version.h>
Why do you need this?
Quoted 5 lines
Quoted 3 lines
---
linux-2.5.66/drivers/media/video/video-buf.c2003-04-02 11:42:51.957723625 +0200+#include <
linux/version.h>Why do you need this?
Because the 2.5.x code doesn't compile on 2.4.x, thus there are version #ifdefs in my device driver tarballs. You just don't see that because some perl magic filteres out the 2.4 code when submitting patches for 2.5.x (and visa versa ...). If you fetch the tarballs from bytesex.org you'll see the #ifdefs in the driver code.
Gerd
Signature · 1 line
Michael Moore for president!
Quoted 11 lines · Gerd Knorr
Quoted 5 lines
Quoted 3 lines
---
linux-2.5.66/drivers/media/video/video-buf.c2003-04-02 11:42:51.957723625 +0200+#include <
linux/version.h>Why do you need this?
Because the 2.5.x code doesn't compile on 2.4.x, thus there are version #ifdefs in my device driver tarballs. You just don't see that because some perl magic filteres out the 2.4 code when submitting patches for 2.5.x (and visa versa ...). If you fetch the tarballs from bytesex.org you'll see the #ifdefs in the driver code.
So what about stripping #include <linux/version.h> in your script aswell? :)
Quoted 7 lines · Christoph Hellwig
Quoted 5 lines
Because the 2.5.x code doesn't compile on 2.4.x, thus there are version #ifdefs in my device driver tarballs. You just don't see that because some perl magic filteres out the 2.4 code when submitting patches for 2.5.x (and visa versa ...). If you fetch the tarballs from bytesex.org you'll see the #ifdefs in the driver code.
So what about stripping #include <
linux/version.h> in your script aswell? :)
In video-buf.c it can likely deleted without side effects, but just removing it unconditionally everythere likely doesn't work because my drivers use the KERNEL_VERSION() macro for the device driver version as well (see drivers/media/video/bttvp.h for example).
Gerd
Signature · 1 line
Michael Moore for president!