如何从 Linux 中给定任务的用户空间进程获取页面?

发布于 2024-11-19 22:39:49 字数 135 浏览 6 评论 0原文

virt_to_page 函数到底返回什么,它返回内核空间中给定地址的页面还是返回用户空间中给定地址的页面?据我所知,它似乎需要一个内核地址并返回该地址的页面。如果是这样,我可以使用什么来从给定任务或 mm_struct 和虚拟地址的用户空间进程获取页面?

What exactly does the virt_to_page function return, does it return the page given an address in the kernel space or does it return a page given an address in user space? As far as I can tell it seems that it takes a kernel address and returns the page for that. If so what can I use to get a page from a user space process given the task or mm_struct and then virtual address?

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

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

发布评论

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

评论(1

下雨或天晴 2024-11-26 22:39:49

virt_to_page() 确实只适用于直接映射的内核地址。要查找用户空间映射的页面,您需要使用 get_user_pages() (并在完成释放页面上的引用后执行 put_page)。

virt_to_page() does indeed work only for direct-mapped kernel addresses. To find a page for a userspace mapping, you need to use get_user_pages() (and do a put_page when you're done to release the reference on the page).

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