gpt4 book ai didi

c - 如何从 ptr 获取结构页面信息并使用 kmalloc 或 vmalloc 固定内存?

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:40 26 4
gpt4 key购买 nike

我正在研究 PCIe/DMA 驱动程序。 DMA 目标内存不在用户空间中分配,而是通过 vmalloc 或 kmalloc 分配。我见过很多使用 get_user_pages_fast 获取结构页面信息并将它们固定到用户空间分配内存的示例。

在我的例子中,get_user_pages_fast(正确地)返回错误代码 -14 提示地址错误(这显然不是用户地址)。

所以,我需要确保 kmalloc 或 vmalloc 返回的缓冲区被固定,并且还想获取内存后面的页面(就像 get_user_pages_fast 一样),如何实现?

非常感谢!

最佳答案

要从使用 kmalloc()vmalloc() 分配的任何 void * 获取 struct page,您想要vmalloc_to_page() .

Linux 内核不会换出它自己的内存,所以如果你只是分配它并且没有告诉内存子系统它可以被交换(即它属于用户进程),那么它应该被固定.

关于c - 如何从 ptr 获取结构页面信息并使用 kmalloc 或 vmalloc 固定内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57814321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com