用户空间内存可不可以用作DMA缓存?

我在用户空间malloc一段内存,假设这段内存不大于4K(目的是保证无力地址的连续性),如果可以得到这段内存的物理地址并且不可能被交换出去,那么,这段内存可不可以用作DMA的缓存?

另外,我以前看到有人写过一个得到用户空间内存物理地址的一个函数,但是找不到了,哪位大侠给发一个。

真做项目的时候发现很多细节光看书是不行的。

非常感谢啊!

作者: liujunwei1234   发布时间: 2011-01-13

"如果可以得到这段内存的物理地址并且不可能被交换出去,那么,这段内存可不可以用作DMA的缓存?"
可以。

找物理地址可以通过遍历PAGE TABLE 来获得。不知道有没有现成的函数。

作者: accessory   发布时间: 2011-01-14

回复 accessory


    谢谢您的回答。 我现在就是想DMA必须要特定的物理内存,比如DMA_ZONE里的。 我现在正在实验。

作者: liujunwei1234   发布时间: 2011-01-14

有现成函数,不想给你,怎么办?

作者: EZWORD   发布时间: 2011-01-14

只能使用二楼的做法吧

作者: jinxinxin163   发布时间: 2011-01-14