从Linux内核/内核模块“附加”用户空间进程

时间:2014-05-22 21:37:26

标签: c linux linux-kernel kernel kernel-module

我想每60秒修改一个特定进程的虚拟到物理地址映射(即页表)。我知道如何修改页表,如何相应地刷新缓存和TLB,以及如何利用workqueue每60秒调用一次我的函数。但是,我不确定如何从内核或内核模块“附加”到目标进程,假设目标进程没有启动任何系统调用。通过“附加”,我的意思是目标进程的行为与遇到中断(例如页面错误)时的行为类似,并且在保存上下文的情况下立即执行内核。那么可以这样做吗?

对内核代码或其他提示中任何类似用法的指针也表示赞赏。

1 个答案:

答案 0 :(得分:0)

您最好的选择是让您感兴趣的过程应用动态虚拟地址,通过IOCTL调用模块或在驱动程序中结束的任何其他调用,使用wait_ *函数在进程上下文中休眠,然后将其唤醒每隔60秒修改该线程中的页表。那你应该有保证的背景。