从用户进程的mm_struct或vm_area_struct读取数据

时间:2011-06-26 03:53:36

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

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

1 个答案:

答案 0 :(得分:2)

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