您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ videobuf_queue_unlock函数代码示例

51自学网 2021-06-03 09:40:08
  C++
这篇教程C++ videobuf_queue_unlock函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中videobuf_queue_unlock函数的典型用法代码示例。如果您正苦于以下问题:C++ videobuf_queue_unlock函数的具体用法?C++ videobuf_queue_unlock怎么用?C++ videobuf_queue_unlock使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了videobuf_queue_unlock函数的17个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: videobuf_querybuf

int 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_vm_close

static 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,


示例3: videobuf_streamon

int 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,


示例4: videobuf_reqbufs

int 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_free

int 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_close

static 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_close

static 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_streamoff

int 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,


示例9: videobuf_mmap_setup

int 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,


示例10: videobuf_read_start

int 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_waiton函数代码示例
C++ videobuf_queue_lock函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。