V4L/DVB: v4l videobuf: remove mmap_free callback
Remove the mmap_free callback from struct videobuf_qtype_ops. All implementations of this callback do the same trivial check: return -EBUSY if any buffer is mmapped. That can also be tested in the videobuf core. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
33435167e6
commit
53aaf07637
5 changed files with 4 additions and 52 deletions
|
@ -311,20 +311,18 @@ static void videobuf_status(struct videobuf_queue *q, struct v4l2_buffer *b,
|
||||||
static int __videobuf_mmap_free(struct videobuf_queue *q)
|
static int __videobuf_mmap_free(struct videobuf_queue *q)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int rc;
|
|
||||||
|
|
||||||
if (!q)
|
if (!q)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS);
|
MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS);
|
||||||
|
|
||||||
rc = CALL(q, mmap_free, q);
|
for (i = 0; i < VIDEO_MAX_FRAME; i++)
|
||||||
|
if (q->bufs[i] && q->bufs[i]->map)
|
||||||
|
return -EBUSY;
|
||||||
|
|
||||||
q->is_mmapped = 0;
|
q->is_mmapped = 0;
|
||||||
|
|
||||||
if (rc < 0)
|
|
||||||
return rc;
|
|
||||||
|
|
||||||
for (i = 0; i < VIDEO_MAX_FRAME; i++) {
|
for (i = 0; i < VIDEO_MAX_FRAME; i++) {
|
||||||
if (NULL == q->bufs[i])
|
if (NULL == q->bufs[i])
|
||||||
continue;
|
continue;
|
||||||
|
@ -333,7 +331,7 @@ static int __videobuf_mmap_free(struct videobuf_queue *q)
|
||||||
q->bufs[i] = NULL;
|
q->bufs[i] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return rc;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int videobuf_mmap_free(struct videobuf_queue *q)
|
int videobuf_mmap_free(struct videobuf_queue *q)
|
||||||
|
|
|
@ -263,19 +263,6 @@ static int __videobuf_iolock(struct videobuf_queue *q,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __videobuf_mmap_free(struct videobuf_queue *q)
|
|
||||||
{
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
dev_dbg(q->dev, "%s\n", __func__);
|
|
||||||
for (i = 0; i < VIDEO_MAX_FRAME; i++) {
|
|
||||||
if (q->bufs[i] && q->bufs[i]->map)
|
|
||||||
return -EBUSY;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __videobuf_mmap_mapper(struct videobuf_queue *q,
|
static int __videobuf_mmap_mapper(struct videobuf_queue *q,
|
||||||
struct vm_area_struct *vma)
|
struct vm_area_struct *vma)
|
||||||
{
|
{
|
||||||
|
@ -424,7 +411,6 @@ static struct videobuf_qtype_ops qops = {
|
||||||
|
|
||||||
.alloc = __videobuf_alloc,
|
.alloc = __videobuf_alloc,
|
||||||
.iolock = __videobuf_iolock,
|
.iolock = __videobuf_iolock,
|
||||||
.mmap_free = __videobuf_mmap_free,
|
|
||||||
.mmap_mapper = __videobuf_mmap_mapper,
|
.mmap_mapper = __videobuf_mmap_mapper,
|
||||||
.video_copy_to_user = __videobuf_copy_to_user,
|
.video_copy_to_user = __videobuf_copy_to_user,
|
||||||
.copy_stream = __videobuf_copy_stream,
|
.copy_stream = __videobuf_copy_stream,
|
||||||
|
|
|
@ -548,20 +548,6 @@ static int __videobuf_sync(struct videobuf_queue *q,
|
||||||
return videobuf_dma_sync(q, &mem->dma);
|
return videobuf_dma_sync(q, &mem->dma);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __videobuf_mmap_free(struct videobuf_queue *q)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < VIDEO_MAX_FRAME; i++) {
|
|
||||||
if (q->bufs[i]) {
|
|
||||||
if (q->bufs[i]->map)
|
|
||||||
return -EBUSY;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __videobuf_mmap_mapper(struct videobuf_queue *q,
|
static int __videobuf_mmap_mapper(struct videobuf_queue *q,
|
||||||
struct vm_area_struct *vma)
|
struct vm_area_struct *vma)
|
||||||
{
|
{
|
||||||
|
@ -711,7 +697,6 @@ static struct videobuf_qtype_ops sg_ops = {
|
||||||
.alloc = __videobuf_alloc,
|
.alloc = __videobuf_alloc,
|
||||||
.iolock = __videobuf_iolock,
|
.iolock = __videobuf_iolock,
|
||||||
.sync = __videobuf_sync,
|
.sync = __videobuf_sync,
|
||||||
.mmap_free = __videobuf_mmap_free,
|
|
||||||
.mmap_mapper = __videobuf_mmap_mapper,
|
.mmap_mapper = __videobuf_mmap_mapper,
|
||||||
.video_copy_to_user = __videobuf_copy_to_user,
|
.video_copy_to_user = __videobuf_copy_to_user,
|
||||||
.copy_stream = __videobuf_copy_stream,
|
.copy_stream = __videobuf_copy_stream,
|
||||||
|
|
|
@ -235,21 +235,6 @@ static int __videobuf_sync(struct videobuf_queue *q,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __videobuf_mmap_free(struct videobuf_queue *q)
|
|
||||||
{
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
dprintk(1, "%s\n", __func__);
|
|
||||||
for (i = 0; i < VIDEO_MAX_FRAME; i++) {
|
|
||||||
if (q->bufs[i]) {
|
|
||||||
if (q->bufs[i]->map)
|
|
||||||
return -EBUSY;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __videobuf_mmap_mapper(struct videobuf_queue *q,
|
static int __videobuf_mmap_mapper(struct videobuf_queue *q,
|
||||||
struct vm_area_struct *vma)
|
struct vm_area_struct *vma)
|
||||||
{
|
{
|
||||||
|
@ -385,7 +370,6 @@ static struct videobuf_qtype_ops qops = {
|
||||||
.alloc = __videobuf_alloc,
|
.alloc = __videobuf_alloc,
|
||||||
.iolock = __videobuf_iolock,
|
.iolock = __videobuf_iolock,
|
||||||
.sync = __videobuf_sync,
|
.sync = __videobuf_sync,
|
||||||
.mmap_free = __videobuf_mmap_free,
|
|
||||||
.mmap_mapper = __videobuf_mmap_mapper,
|
.mmap_mapper = __videobuf_mmap_mapper,
|
||||||
.video_copy_to_user = __videobuf_copy_to_user,
|
.video_copy_to_user = __videobuf_copy_to_user,
|
||||||
.copy_stream = __videobuf_copy_stream,
|
.copy_stream = __videobuf_copy_stream,
|
||||||
|
|
|
@ -144,7 +144,6 @@ struct videobuf_qtype_ops {
|
||||||
size_t pos,
|
size_t pos,
|
||||||
int vbihack,
|
int vbihack,
|
||||||
int nonblocking);
|
int nonblocking);
|
||||||
int (*mmap_free) (struct videobuf_queue *q);
|
|
||||||
int (*mmap_mapper) (struct videobuf_queue *q,
|
int (*mmap_mapper) (struct videobuf_queue *q,
|
||||||
struct vm_area_struct *vma);
|
struct vm_area_struct *vma);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue