[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: [RFC PATCH 08/35] Add Xen-specific memory management definitions
+#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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |