[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



On Tue, May 09, 2006 at 07:49:45AM -0700, Martin J. Bligh wrote:
> 
> >+#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?

Indeed, I'll use lookup_address instead.

> >+
> >+#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.

I've changed these to be functions and moved them into a .c file
under arch/i386/mach-xen.

    christian


_______________________________________________
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®.