我在做KVM内存。我注意到有时会调用kvm_unmap_hva_range()
,然后调用drop_stpe()
然后调用drop_spte()
,这会将某个spte设置为零。我想在QEMU中从HVA到PFN的映射发生了变化,所以它需要使那些指向那些PFN的sptes无效,对吧?
我为spte做了一些CoW机制,所以public Throwable processError(RetrofitError cause) {
Response r = cause.getResponse();
if (r != null) {
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
String line;
try {
br = new BufferedReader(new InputStreamReader(r.getBody().in()));
while ((line = br.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
Log.e(TAG, "IOException", e);
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
Log.e(TAG, "IOException", e);
}
}
}
if (r.getStatus() == 401) {
Log.e(TAG, "401 Unauthorized Exception...");
} else if (r.getStatus() == 500) {
Log.e(TAG, "500 Server Error...");
}
Log.e(TAG, sb.toString());
}
return cause;
}
使得它很难工作。我可以将页面固定在内存中,以便从HVA到PFN的映射不会改变吗?我想在一个访客页面上张贴一个页面,这样就不会意外删除它
非常感谢!
答案 0 :(得分:1)
我猜kvm_get_pfn()可用于固定pfn。您可以使用gfn_to_pfn()来获取与gfn相对应的pfn。要取消固定页面,您可以使用kvm_release_pfn_clean()。