高速I/O的驱动——如何避免数据拷贝?

发布于 2022-09-23 14:13:41 字数 194 浏览 11 评论 0

许多驱动会产生内核和用户空间的数据拷贝,这在高速的接口如PCIe接入高清视频信息时效率会不会太低?显卡好像会直接把显存映射到用户空间中,然后X直接操作显存。但反过来如果是从外部读入视频数据然后由应用层进行编码压缩应该如何处理?用mmap能否实现?视频信号是分帧的,直接在应用中处理好像有些麻烦;或者每次读取时一个帧到了remap一次?不知道有没有哪位大佬做过类似的驱动,能给提供一个思路?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

丿*梦醉红颜 2022-09-30 14:13:41

完全是可以的,这个map的内存结构完全由你来操纵和设置

执妄 2022-09-30 14:13:41

这个如何实现呢? 顶 顶 顶

未央 2022-09-30 14:13:41

原帖由 dreamice 于 2009-1-9 15:58 发表
完全是可以的,这个map的内存结构完全由你来操纵和设置

没太明白,你是指实现驱动的mmap操作,还是在读接口中用remap操作再想办法把地址带出来?

用mmap麻烦的是,它本身容易操作静态文件,而驱动中的数据是“流动”的,随着时间在变。我能想到的是在这块空间上设计一个“标识”,不停地poll它,如果是硬件发的新帧,就使用它,然后设置为“无效”。但这样感觉挺麻烦的,不知道有没有更好的办法?

故事与诗 2022-09-30 14:13:41

你可以看一下内核document下的packet_mmap.txt,仿照一下。通常libpcap,tcpdump就是类似这样实现的,网络数据报可是动态的了

[ 本帖最后由 dreamice 于 2009-1-10 08:48 编辑 ]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文