linux有异步memcpy函数吗?我希望它与 DMA 一起工作并在完成时通知我。
最佳答案
据我所知,CPU 不会/不能对自己执行 DMA。因此,您需要总线上的外部硬件来为您完成这项工作。
然而,大多数硬件无法寻址所有物理内存,因此除非您在用例中对内存地址范围有非常严格的定义,否则不可能进行精确的 memcpy 克隆。否则内核将不得不将该 block memcpy 到您自己的内存块本身,这首先会破坏克隆 memcpy 的目的:)
但是如果你想在不使用 memcpy 的情况下创建内存块的“克隆”(顺便说一下,这仍然是一个坏主意,因为 DMA 内存访问通常比 CPU 慢)你可以将内存块发送到视频卡,然后将其拉回另一个缓冲区。您甚至可以将 block 放入视频内存中(putbitmap()?:))并执行硬件加速 bitblt() 以动态创建副本。
您介意分享您的实际目标,以便人们可以想出更聪明/更好的技巧吗?
关于c - linux 中的异步 memcpy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1798027/