首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux V4L2子系统-videobuf2框架分析

为此,Linux内核抽象出了videobuf2机制,用于管理存放视频图像的帧缓冲。videobuf2抽象层像一座桥梁,将用户空间和V4L2 driver连接起来。...二、分类: 不是所有的Video设备都使用同一种类型的videobuf2。实时上,Linux内核中有3中不同类型的videobuf2。 (1)缓冲区物理地址和虚拟地址不连续。...Linux系统分为用户空间和内核空间,应用程序处于用户空间,而内核运行在内核空间。V4L2子系统属于内核的组件,也运行在内核空间,其采集的数据也保存在内核空间的内存中。...[include/uapi/linux/videodev2.h] // videobuf2类型枚举 enum v4l2_buf_type { V4L2_BUF_TYPE_VIDEO_CAPTURE...[include/linux/dma-direction.h] enum dma_data_direction { // DMA数据传输方向 DMA_BIDIRECTIONAL

62260
您找到你想要的搜索结果了吗?
是的
没有找到

宋宝华:世上最好的共享内存(Linux共享内存最透彻的一篇)

我早就想系统地写一篇综述Linux里面各种共享内存方式的文章了,但是一直被带娃这个事业牵绊,今日我决定顶着娃娃们的山呼海啸,也要写一篇文章不吐不快。...数字本身在Linux的fd里面真地是一点都不重要,除了几个特殊的0,1,2这样的数字外。...我只能说,你对Linux内核的只提供机制不提供策略,以及软件工程每个模块各司其责,高内聚和低耦合的理解,还停留在裸奔的阶段。...比如在v4l2驱动中,v4l2驱动支持把dma_buf导出(前面讲了v4l2也支持dma_buf的导入,关键看数据方向),它的代码体现在: drivers/media/common/videobuf2/...videobuf2-dma-contig.c中的: ?

36.2K139

宋宝华:论Linux的页迁移(Page Migration)完整版

我认为有2种场景下,你会关注这个Page迁移的问题:一个是在Linux里面写实时程序,尤其是Linux的RT补丁打上后的情况,你希望你的应用有一个确定的时延,不希望跑着跑着你的Page正在换位置而导致的延迟...在Linux中,执行mlock()操作的时候,相应的VMA会被设置VM_LOCKED标记。...我们可以看看V4L2驱动,如果用户空间传一个指针进来进行DMA,V4L2驱动的内核态是如何处理的,相关代码位于drivers/media/v4l2-core/videobuf-dma-sg.c: ?...videobuf_dma_init_user_locked()根据用户空间buffer的开始地址和大小,计算出page的数量,然后调用pin_user_pages()把这些page在内核pin住。...从用户场景上来看,内核驱动Pin住了USERPTR对应的memory后,进一步,V4L2的代码videobuf_dma_map()会把这个buffer转换为sg进行map_sg操作,之后就可以DMA了。

3.5K41

Linux - Linux内存管理

为了解决内存紧缺的问题,Linux引入了虚拟内存的概念。为了解决快速存取,引入了缓存机制、交换机制等。...要深入了解Linux内存运行机制,需要知道下面提到的几个方面。 首先,Linux系统会不时地进行页面交换操作,以保持尽可能多的空闲物理内存。...其次,Linux进行页面交换是有条件的,不是所有页面在不用时都交换到虚拟内存中,Linux内核根据“最近最经常使用”算法,仅仅将一些不经常使用的页面文件交换到虚拟内存中。...Linux虽然可以在一段时间内自行恢复,但是恢复后的系统已经基本不可用了。...Linux下可以使用文件系统中的一个常规文件或者一个独立分区作为交换空间。同时Linux允许使用多个交换分区或者交换文件。

52.1K41
领券