2
的有效性,我通过VMALLOC_START和VMALLOC_END的网页迭代,我想 检查,如果我每次都遇到的地址是有效的。 我该如何管理?检查虚拟内存地址
我通过这样的页面重复:
unsigned long *p;
for(p = (unsigned long *) VMALLOC_START; p <= (unsigned long *) (VMALLOC_END - PAGE_SIZE); p += PAGE_SIZE)
{
//How to check if p is OK to access it?
}
谢谢!
您好,感谢您的答复。这个解决方案是不可移植的,对吗?我试图用纯C来管理这个。现在我有这个实现,但我认为它是越野车: https://github.com/PanosSakkos/shedder/blob/master/src/shedder_core.c#L44 Any想法会比欢迎:) 谢谢! – Panos
我不认为有一个便携式解决方案。我认为你的代码也是不可移植的。它也不能处理大页面(例如在x86中,你可以有一个2MB的页面,这意味着pmd有时直接指向物理地址(或类似的东西)。 – ugoren
这里http://www.phrack.org/ issues.html?ID = 3&问题= 61(搜索“中映射的问题”),这似乎说明了便携式(纯C)的方式来做到这一点。我只是不明白,因为它是非常写的。谢谢! – Panos