|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] Re: [RFC PATCH 08/35] Add Xen-specific memory management def
+#define virt_to_ptep(__va) \
+({ \
+ pgd_t *__pgd = pgd_offset_k((unsigned long)(__va)); \
+ pud_t *__pud = pud_offset(__pgd, (unsigned long)(__va)); \
+ pmd_t *__pmd = pmd_offset(__pud, (unsigned long)(__va)); \
+ pte_offset_kernel(__pmd, (unsigned long)(__va)); \
+})
Do we really need yet another function to do this?
Especially one in a mult-line #define instead of a real function call,
and that doesn't seem to error check at each step?
+
+#define arbitrary_virt_to_machine(__va)
\
+({ \
+ maddr_t m = (maddr_t)pte_mfn(*virt_to_ptep(__va)) << PAGE_SHIFT;\
+ m | ((unsigned long)(__va) & (PAGE_SIZE-1)); \
+})
+
+#define make_lowmem_page_readonly(va, feature) do { \
+ pte_t *pte; \
+ int rc; \
+ \
+ if (xen_feature(feature)) \
+ return; \
+ \
+ pte = virt_to_ptep(va); \
+ rc = HYPERVISOR_update_va_mapping( \
+ (unsigned long)va, pte_wrprotect(*pte), 0); \
+ BUG_ON(rc); \
+} while (0)
Things this long should definitely not be #defines.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|