【问题标题】:Reading data from mm_struct or vm_area_struct of user process从用户进程的 mm_struct 或 vm_area_struct 读取数据
【发布时间】:2011-09-22 20:19:57
【问题描述】:

我想知道如何在内核模式下从用户进程的页面复制数据。我可以访问该进程的 mm_struct 和所有 vm_area_structs。在 vm_ops 我看到了访问方法,但我不确定它是如何工作的。任何帮助将不胜感激。

【问题讨论】:

  • 我很好奇你想在这里做什么?
  • 我只想在写入错误发生在不同位置时复制数据,并完全避免从磁盘读取页面。

标签: memory-management linux-kernel kernel kernel-mode


【解决方案1】:

可以通过 linux/mm.h 中声明的 access_process_vm 方法来完成(我相信我现在不记得了)。这是访问进程内存的安全方法,需要的是进程的task_struct,要写入/读取的数据的缓冲区,进程的vm空间内的大小,地址以及是否是读/写.这是安全的原因是因为它有所有适当的锁来处理这个问题,并且如果 get_user_pages 失败,它有获取用户空间页面的备份方法。返回值是从 vm 空间读取的字节数。

【讨论】:

    猜你喜欢
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 2020-04-14
    • 2020-08-14
    • 2014-12-01
    • 1970-01-01
    • 2021-12-05
    相关资源
    最近更新 更多