这篇教程C++ videobuf_queue_lock函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中videobuf_queue_lock函数的典型用法代码示例。如果您正苦于以下问题:C++ videobuf_queue_lock函数的具体用法?C++ videobuf_queue_lock怎么用?C++ videobuf_queue_lock使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了videobuf_queue_lock函数的21个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: videobuf_querybufint videobuf_querybuf(struct videobuf_queue *q, struct v4l2_buffer *b){ int ret = -EINVAL; videobuf_queue_lock(q); if (unlikely(b->type != q->type)) { dprintk(1, "querybuf: Wrong type./n"); goto done; } if (unlikely(b->index >= VIDEO_MAX_FRAME)) { dprintk(1, "querybuf: index out of range./n"); goto done; } if (unlikely(NULL == q->bufs[b->index])) { dprintk(1, "querybuf: buffer is null./n"); goto done; } videobuf_status(q, b, q->bufs[b->index], q->type); ret = 0;done: videobuf_queue_unlock(q); return ret;}
开发者ID:Anjali05,项目名称:linux,代码行数:25,
示例2: videobuf_streamonint videobuf_streamon(struct videobuf_queue *q){ struct videobuf_buffer *buf; unsigned long flags = 0; int retval; videobuf_queue_lock(q); retval = -EBUSY; if (q->reading) goto done; retval = 0; if (q->streaming) goto done; q->streaming = 1; spin_lock_irqsave(q->irqlock, flags); list_for_each_entry(buf, &q->stream, stream) if (buf->state == VIDEOBUF_PREPARED) q->ops->buf_queue(q, buf); spin_unlock_irqrestore(q->irqlock, flags); wake_up_interruptible_sync(&q->wait);done: videobuf_queue_unlock(q); return retval;}
开发者ID:Anjali05,项目名称:linux,代码行数:25,
示例3: videobuf_vm_closestatic void videobuf_vm_close(struct vm_area_struct *vma){ struct videobuf_mapping *map = vma->vm_private_data; struct videobuf_queue *q = map->q; struct videobuf_dma_sg_memory *mem; int i; dprintk(2, "vm_close %p [count=%d,vma=%08lx-%08lx]/n", map, map->count, vma->vm_start, vma->vm_end); map->count--; if (0 == map->count) { dprintk(1, "munmap %p q=%p/n", map, q); videobuf_queue_lock(q); for (i = 0; i < VIDEO_MAX_FRAME; i++) { if (NULL == q->bufs[i]) continue; mem = q->bufs[i]->priv; if (!mem) continue; MAGIC_CHECK(mem->magic, MAGIC_SG_MEM); if (q->bufs[i]->map != map) continue; q->bufs[i]->map = NULL; q->bufs[i]->baddr = 0; q->ops->buf_release(q, q->bufs[i]); } videobuf_queue_unlock(q); kfree(map); } return;}
开发者ID:0xroot,项目名称:Blackphone-BP1-Kernel,代码行数:34,
示例4: videobuf_reqbufsint videobuf_reqbufs(struct videobuf_queue *q, struct v4l2_requestbuffers *req){ unsigned int size, count; int retval; if (req->memory != V4L2_MEMORY_MMAP && req->memory != V4L2_MEMORY_USERPTR && req->memory != V4L2_MEMORY_OVERLAY) { dprintk(1, "reqbufs: memory type invalid/n"); return -EINVAL; } videobuf_queue_lock(q); if (req->type != q->type) { dprintk(1, "reqbufs: queue type invalid/n"); retval = -EINVAL; goto done; } if (q->streaming) { dprintk(1, "reqbufs: streaming already exists/n"); retval = -EBUSY; goto done; } if (!list_empty(&q->stream)) { dprintk(1, "reqbufs: stream running/n"); retval = -EBUSY; goto done; } if (req->count == 0) { dprintk(1, "reqbufs: count invalid (%d)/n", req->count); retval = __videobuf_free(q); goto done; } count = req->count; if (count > VIDEO_MAX_FRAME) count = VIDEO_MAX_FRAME; size = 0; q->ops->buf_setup(q, &count, &size); dprintk(1, "reqbufs: bufs=%d, size=0x%x [%u pages total]/n", count, size, (unsigned int)((count * PAGE_ALIGN(size)) >> PAGE_SHIFT)); retval = __videobuf_mmap_setup(q, count, size, req->memory); if (retval < 0) { dprintk(1, "reqbufs: mmap setup returned %d/n", retval); goto done; } req->count = retval; retval = 0; done: videobuf_queue_unlock(q); return retval;}
开发者ID:Anjali05,项目名称:linux,代码行数:59,
示例5: videobuf_mmap_freeint videobuf_mmap_free(struct videobuf_queue *q){ int ret; videobuf_queue_lock(q); ret = __videobuf_free(q); videobuf_queue_unlock(q); return ret;}
开发者ID:Anjali05,项目名称:linux,代码行数:8,
示例6: videobuf_vm_closestatic void videobuf_vm_close(struct vm_area_struct *vma){ struct videobuf_mapping *map = vma->vm_private_data; struct videobuf_queue *q = map->q; int i; dprintk(2, "vm_close %p [count=%u,vma=%08lx-%08lx]/n", map, map->count, vma->vm_start, vma->vm_end); map->count--; if (0 == map->count) { struct videobuf_vmalloc_memory *mem; dprintk(1, "munmap %p q=%p/n", map, q); videobuf_queue_lock(q); /* */ if (q->streaming) videobuf_queue_cancel(q); for (i = 0; i < VIDEO_MAX_FRAME; i++) { if (NULL == q->bufs[i]) continue; if (q->bufs[i]->map != map) continue; mem = q->bufs[i]->priv; if (mem) { /* */ MAGIC_CHECK(mem->magic, MAGIC_VMAL_MEM); /* */ dprintk(1, "%s: buf[%d] freeing (%p)/n", __func__, i, mem->vaddr); vfree(mem->vaddr); mem->vaddr = NULL; } q->bufs[i]->map = NULL; q->bufs[i]->baddr = 0; } kfree(map); videobuf_queue_unlock(q); } return;}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:58,
示例7: videobuf_vm_closestatic void videobuf_vm_close(struct vm_area_struct *vma){ struct videobuf_mapping *map = vma->vm_private_data; struct videobuf_queue *q = map->q; int i; dprintk(2, "vm_close %p [count=%u,vma=%08lx-%08lx]/n", map, map->count, vma->vm_start, vma->vm_end); map->count--; if (0 == map->count) { struct videobuf_vmalloc_memory *mem; dprintk(1, "munmap %p q=%p/n", map, q); videobuf_queue_lock(q); /* We need first to cancel streams, before unmapping */ if (q->streaming) videobuf_queue_cancel(q); for (i = 0; i < VIDEO_MAX_FRAME; i++) { if (NULL == q->bufs[i]) continue; if (q->bufs[i]->map != map) continue; mem = q->bufs[i]->priv; if (mem) { /* This callback is called only if kernel has allocated memory and this memory is mmapped. In this case, memory should be freed, in order to do memory unmap. */ MAGIC_CHECK(mem->magic, MAGIC_VMAL_MEM); /* vfree is not atomic - can't be called with IRQ's disabled */ dprintk(1, "%s: buf[%d] freeing (%p)/n", __func__, i, mem->vaddr); vfree(mem->vaddr); mem->vaddr = NULL; } q->bufs[i]->map = NULL; q->bufs[i]->baddr = 0; } kfree(map); videobuf_queue_unlock(q); } return;}
开发者ID:CSCLOG,项目名称:beaglebone,代码行数:58,
示例8: videobuf_mmap_setupint videobuf_mmap_setup(struct videobuf_queue *q, unsigned int bcount, unsigned int bsize, enum v4l2_memory memory){ int ret; videobuf_queue_lock(q); ret = __videobuf_mmap_setup(q, bcount, bsize, memory); videobuf_queue_unlock(q); return ret;}
开发者ID:Anjali05,项目名称:linux,代码行数:10,
示例9: videobuf_streamoffint videobuf_streamoff(struct videobuf_queue *q){ int retval; videobuf_queue_lock(q); retval = __videobuf_streamoff(q); videobuf_queue_unlock(q); return retval;}
开发者ID:Anjali05,项目名称:linux,代码行数:10,
示例10: videobuf_read_startint videobuf_read_start(struct videobuf_queue *q){ int rc; videobuf_queue_lock(q); rc = __videobuf_read_start(q); videobuf_queue_unlock(q); return rc;}
开发者ID:Anjali05,项目名称:linux,代码行数:10,
示例11: stream_next_buffer_check_queue/* Locking: Caller holds q->vb_lock */static int stream_next_buffer_check_queue(struct videobuf_queue *q, int noblock){ int retval; bool is_ext_locked;checks: if (!q->streaming) { dprintk(1, "next_buffer: Not streaming/n"); retval = -EINVAL; goto done; } if (list_empty(&q->stream)) { if (noblock) { retval = -EAGAIN; dprintk(2, "next_buffer: no buffers to dequeue/n"); goto done; } else { dprintk(2, "next_buffer: waiting on buffer/n"); /* Drop lock to avoid deadlock with qbuf */ videobuf_queue_unlock(q); /*[email C++ videobuf_queue_unlock函数代码示例 C++ videobuf_iolock函数代码示例
|