[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.