正如标题所示,我有一个从虚拟地址获取物理地址的问题.
让我解释一下:给定进程空间中的变量声明,如何从OS映射它的物理地址?
我已经在一些SYS电话绊倒/asm/io.h在virt_to_phys()函数定义; 但是看起来这个标题已经过时了,我无法找到解决方法.
然而; io.h可在以下位置获得:/usr/src/linux-headers-2.6.35-28-generic/arch/x86/include/asm/.我当前的内核是2.6.35-28,但io.h不包括在内/usr/include/asm/?
所以,重申一下:我需要一种从虚拟中获取物理地址的方法.优选地,在运行时从应用程序内派生.但即使是使用监视器的解决方法/proc/PID/maps也可以.
任何想法或意见将不胜感激.
编辑 在对这个主题做了一些研究之后,我发现了一些在这方面有所帮助的东西.
事实证明这是可行的,虽然需要一些解决方法.这是一个分析当前映射页面的简单应用程序的链接.有问题的文件是(二进制文件)/proc/pid/pagemap(包含虚拟页面的物理映射).无论如何,该链接中的代码可以被修改为用作监视器应用程序或其他东西.
我需要物理地址进行缓存模拟.
感谢所有的帮助和答案!