[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [patch] "frame number" size in hypercall ABI



On Wed, 2006-04-19 at 16:43 +0100, Keir Fraser wrote:
> On 19 Apr 2006, at 16:32, Joe Bonasera wrote:
> 
> >> I think the patch looks okay in principle, except I notice a couple 
> >> of 'framno_t' misspellings. I think 'pfn_t' would be more in keeping 
> >> with the Xen naming scheme for arbitrary page frame numbers, but 
> >> perhaps that name is a bit unnecessarily cryptic. What is the 
> >> immediate problem you're needing to solve?
> >>   -- Keir
> >
> > Please don't use pfn_t, that's what Solaris already uses internally for
> > physical frame numbers. In the Xen code for Solaris, I introduced
> > mfn_t as the corresponding type for Xen's machine frame numbers.
> > frameno_t is fine, as I can just define mfn_t and frameno_t to be
> > the same, but conflicting pfn_t's would be problematic.
> 
> Fair enough. We should really avoid polluting the typedef namespace 
> with such short names anyway.

"xen_frameno_t" then?

Attached is the updated patch, with typos fixed and a couple other
corrections. I've also added the type to arch-x86_64.h and arch-ia64.h,
so I think the patch is ready to be applied.

-- 
Hollis Blanchard
IBM Linux Technology Center

Represent frame numbers with a typedef instead of "unsigned long".

Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx>

diff -r c4eead8a925b linux-2.6-xen-sparse/include/xen/public/privcmd.h
--- a/linux-2.6-xen-sparse/include/xen/public/privcmd.h Sun Apr 16 15:41:31 
2006 +0100
+++ b/linux-2.6-xen-sparse/include/xen/public/privcmd.h Wed Apr 19 11:39:31 
2006 -0500
@@ -45,7 +45,7 @@ typedef struct privcmd_hypercall
 
 typedef struct privcmd_mmap_entry {
        unsigned long va;
-       unsigned long mfn;
+       frameno_t mfn;
        unsigned long npages;
 } privcmd_mmap_entry_t; 
 
diff -r c4eead8a925b tools/debugger/libxendebug/xendebug.c
--- a/tools/debugger/libxendebug/xendebug.c     Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/debugger/libxendebug/xendebug.c     Wed Apr 19 11:39:31 2006 -0500
@@ -57,7 +57,7 @@ typedef struct domain_context           
     vcpu_guest_context_t context[MAX_VIRT_CPUS];
 
     long            total_pages;
-    unsigned long  *page_array;
+    frameno_t      *page_array;
 
     unsigned long   cr3_phys[MAX_VIRT_CPUS];
     unsigned long  *cr3_virt[MAX_VIRT_CPUS];
diff -r c4eead8a925b tools/ioemu/vl.c
--- a/tools/ioemu/vl.c  Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/ioemu/vl.c  Wed Apr 19 11:39:31 2006 -0500
@@ -149,11 +149,11 @@ TextConsole *vga_console;
 TextConsole *vga_console;
 CharDriverState *serial_hds[MAX_SERIAL_PORTS];
 int xc_handle;
-unsigned long *vgapage_array;
-unsigned long *freepage_array;
+frameno_t *vgapage_array;
+frameno_t *freepage_array;
 unsigned long free_pages;
 void *vtop_table;
-unsigned long toptab;
+frameno_t toptab;
 unsigned long vgaram_pages;
 
 /***********************************************************/
@@ -2673,7 +2673,8 @@ int main(int argc, char **argv)
     int serial_device_index;
     char qemu_dm_logfilename[64];
     const char *loadvm = NULL;
-    unsigned long nr_pages, extra_pages, ram_pages, *page_array;
+    unsigned long nr_pages, extra_pages, ram_pages;
+    frameno_t *page_array;
     xc_dominfo_t info;
     extern void *shared_page;
     extern void *shared_vram;
@@ -3156,8 +3157,8 @@ int main(int argc, char **argv)
         exit(-1);
     }
 
-    if ( (page_array = (unsigned long *)
-                        malloc(nr_pages * sizeof(unsigned long))) == NULL)
+    if ( (page_array = (frameno_t *)
+                        malloc(nr_pages * sizeof(frameno_t))) == NULL)
     {
         fprintf(logfile, "malloc returned error %d\n", errno);
         exit(-1);
@@ -3239,7 +3240,7 @@ int main(int argc, char **argv)
                                        page_array[0]);
 #endif
 
-    fprintf(logfile, "shared page at pfn:%lx, mfn: %lx\n", (nr_pages-1),
+    fprintf(logfile, "shared page at pfn:%lx, mfn: %"PRIx64"\n", (nr_pages-1),
            (page_array[nr_pages - 1]));
 
     /* we always create the cdrom drive, even if no disk is there */
diff -r c4eead8a925b tools/libxc/xc_core.c
--- a/tools/libxc/xc_core.c     Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/libxc/xc_core.c     Wed Apr 19 11:39:31 2006 -0500
@@ -11,7 +11,7 @@ static int
 static int
 copy_from_domain_page(int xc_handle,
                       uint32_t domid,
-                      unsigned long mfn,
+                      frameno_t mfn,
                       void *dst_page)
 {
     void *vaddr = xc_map_foreign_range(
@@ -93,7 +93,7 @@ xc_domain_dumpcore_via_callback(int xc_h
         printf("Could not get the page frame list\n");
         goto error_out;
     }
-    sts = dump_rtn(args, (char *)page_array, nr_pages * sizeof(unsigned long));
+    sts = dump_rtn(args, (char *)page_array, nr_pages * sizeof(frameno_t));
     if ( sts != 0 )
         goto error_out;
 
diff -r c4eead8a925b tools/libxc/xc_domain.c
--- a/tools/libxc/xc_domain.c   Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/libxc/xc_domain.c   Wed Apr 19 11:39:31 2006 -0500
@@ -291,7 +291,7 @@ int xc_domain_memory_increase_reservatio
                                           unsigned long nr_extents,
                                           unsigned int extent_order,
                                           unsigned int address_bits,
-                                          unsigned long *extent_start)
+                                          frameno_t *extent_start)
 {
     int err;
     struct xen_memory_reservation reservation = {
@@ -322,7 +322,7 @@ int xc_domain_memory_decrease_reservatio
                                           uint32_t domid,
                                           unsigned long nr_extents,
                                           unsigned int extent_order,
-                                          unsigned long *extent_start)
+                                          frameno_t *extent_start)
 {
     int err;
     struct xen_memory_reservation reservation = {
diff -r c4eead8a925b tools/libxc/xc_hvm_build.c
--- a/tools/libxc/xc_hvm_build.c        Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/libxc/xc_hvm_build.c        Wed Apr 19 11:39:31 2006 -0500
@@ -135,7 +135,7 @@ static void set_hvm_info_checksum(struct
  * hvmloader will use this info to set BIOS accordingly
  */
 static int set_hvm_info(int xc_handle, uint32_t dom,
-                        unsigned long *pfn_list, unsigned int vcpus,
+                        frameno_t *pfn_list, unsigned int vcpus,
                         unsigned int pae, unsigned int acpi, unsigned int apic)
 {
     char *va_map;
@@ -176,9 +176,9 @@ static int setup_guest(int xc_handle,
                        unsigned int acpi,
                        unsigned int apic,
                        unsigned int store_evtchn,
-                       unsigned long *store_mfn)
-{
-    unsigned long *page_array = NULL;
+                       frameno_t *store_mfn)
+{
+    frameno_t *page_array = NULL;
     unsigned long count, i;
     unsigned long long ptr;
     xc_mmu_t *mmu = NULL;
@@ -190,7 +190,7 @@ static int setup_guest(int xc_handle,
     struct domain_setup_info dsi;
     unsigned long long v_end;
 
-    unsigned long shared_page_frame = 0;
+    frameno_t shared_page_frame = 0;
     shared_iopage_t *sp;
 
     memset(&dsi, 0, sizeof(struct domain_setup_info));
@@ -223,7 +223,7 @@ static int setup_guest(int xc_handle,
         goto error_out;
     }
 
-    if ( (page_array = malloc(nr_pages * sizeof(unsigned long))) == NULL )
+    if ( (page_array = malloc(nr_pages * sizeof(frameno_t))) == NULL )
     {
         PERROR("Could not allocate memory.\n");
         goto error_out;
@@ -346,7 +346,7 @@ static int xc_hvm_build_internal(int xc_
                                  unsigned int acpi,
                                  unsigned int apic,
                                  unsigned int store_evtchn,
-                                 unsigned long *store_mfn)
+                                 frameno_t *store_mfn)
 {
     dom0_op_t launch_op, op;
     int rc, i;
@@ -592,7 +592,7 @@ int xc_hvm_build(int xc_handle,
                  unsigned int acpi,
                  unsigned int apic,
                  unsigned int store_evtchn,
-                 unsigned long *store_mfn)
+                 frameno_t *store_mfn)
 {
     char *image;
     int  sts;
@@ -628,7 +628,7 @@ int xc_hvm_build_mem(int xc_handle,
                      unsigned int acpi,
                      unsigned int apic,
                      unsigned int store_evtchn,
-                     unsigned long *store_mfn)
+                     frameno_t *store_mfn)
 {
     int           sts;
     unsigned long img_len;
diff -r c4eead8a925b tools/libxc/xc_ia64_stubs.c
--- a/tools/libxc/xc_ia64_stubs.c       Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/libxc/xc_ia64_stubs.c       Wed Apr 19 11:39:31 2006 -0500
@@ -31,8 +31,8 @@ int xc_linux_save(int xc_handle, int io_
 }
 
 int xc_linux_restore(int xc_handle, int io_fd, uint32_t dom, unsigned long 
nr_pfns,
-                     unsigned int store_evtchn, unsigned long *store_mfn,
-                     unsigned int console_evtchn, unsigned long *console_mfn)
+                     unsigned int store_evtchn, frameno_t *store_mfn,
+                     unsigned int console_evtchn, frameno_t *console_mfn)
 {
     PERROR("xc_linux_restore not implemented\n");
     return -1;
@@ -51,7 +51,7 @@ xc_plan9_build(int xc_handle,
 
 int xc_ia64_get_pfn_list(int xc_handle,
                          uint32_t domid,
-                         unsigned long *pfn_buf,
+                         frameno_t *pfn_buf, 
                          unsigned int start_page,
                          unsigned int nr_pages)
 {
@@ -65,7 +65,7 @@ int xc_ia64_get_pfn_list(int xc_handle,
     op.u.getmemlist.buffer   = pfn_buf;
 
     if ( (max_pfns != -1UL)
-        && mlock(pfn_buf, nr_pages * sizeof(unsigned long)) != 0 )
+        && mlock(pfn_buf, nr_pages * sizeof(frameno_t)) != 0 )
     {
         PERROR("Could not lock pfn list buffer");
         return -1;
@@ -74,7 +74,7 @@ int xc_ia64_get_pfn_list(int xc_handle,
     ret = do_dom0_op(xc_handle, &op);
 
     if (max_pfns != -1UL)
-        (void)munlock(pfn_buf, nr_pages * sizeof(unsigned long));
+        (void)munlock(pfn_buf, nr_pages * sizeof(frameno_t));
 
     return (ret < 0) ? -1 : op.u.getmemlist.num_pfns;
 }
@@ -93,10 +93,10 @@ int xc_ia64_copy_to_domain_pages(int xc_
 {
     // N.B. gva should be page aligned
 
-    unsigned long *page_array = NULL;
+    frameno_t *page_array = NULL;
     int i;
 
-    if ( (page_array = malloc(nr_pages * sizeof(unsigned long))) == NULL ){
+    if ( (page_array = malloc(nr_pages * sizeof(frameno_t))) == NULL ){
         PERROR("Could not allocate memory");
         goto error_out;
     }
@@ -643,7 +643,7 @@ int xc_hvm_build(int xc_handle,
                  unsigned int acpi,
                  unsigned int apic,
                  unsigned int store_evtchn,
-                 unsigned long *store_mfn)
+                 frameno_t *store_mfn)
 {
     dom0_op_t launch_op, op;
     int rc ;
diff -r c4eead8a925b tools/libxc/xc_linux_build.c
--- a/tools/libxc/xc_linux_build.c      Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/libxc/xc_linux_build.c      Wed Apr 19 11:39:31 2006 -0500
@@ -18,6 +18,7 @@
 #include "xc_aout9.h"
 #include <stdlib.h>
 #include <unistd.h>
+#include <inttypes.h>
 #include <zlib.h>
 
 #if defined(__i386__)
@@ -144,7 +145,7 @@ int load_initrd(int xc_handle, domid_t d
 int load_initrd(int xc_handle, domid_t dom,
                 struct initrd_info *initrd,
                 unsigned long physbase,
-                unsigned long *phys_to_mach)
+                frameno_t *phys_to_mach)
 {
     char page[PAGE_SIZE];
     unsigned long pfn_start, pfn, nr_pages;
@@ -197,7 +198,7 @@ static int setup_pg_tables(int xc_handle
                            vcpu_guest_context_t *ctxt,
                            unsigned long dsi_v_start,
                            unsigned long v_end,
-                           unsigned long *page_array,
+                           frameno_t *page_array,
                            unsigned long vpt_start,
                            unsigned long vpt_end,
                            unsigned shadow_mode_enabled)
@@ -259,7 +260,7 @@ static int setup_pg_tables_pae(int xc_ha
                                vcpu_guest_context_t *ctxt,
                                unsigned long dsi_v_start,
                                unsigned long v_end,
-                               unsigned long *page_array,
+                               frameno_t *page_array,
                                unsigned long vpt_start,
                                unsigned long vpt_end,
                                unsigned shadow_mode_enabled)
@@ -352,7 +353,7 @@ static int setup_pg_tables_64(int xc_han
                               vcpu_guest_context_t *ctxt,
                               unsigned long dsi_v_start,
                               unsigned long v_end,
-                              unsigned long *page_array,
+                              frameno_t *page_array,
                               unsigned long vpt_start,
                               unsigned long vpt_end,
                               int shadow_mode_enabled)
@@ -459,11 +460,11 @@ static int setup_guest(int xc_handle,
                        const char *cmdline,
                        unsigned long shared_info_frame,
                        unsigned long flags,
-                       unsigned int store_evtchn, unsigned long *store_mfn,
-                       unsigned int console_evtchn, unsigned long *console_mfn,
+                       unsigned int store_evtchn, frameno_t *store_mfn,
+                       unsigned int console_evtchn, frameno_t *console_mfn,
                        uint32_t required_features[XENFEAT_NR_SUBMAPS])
 {
-    unsigned long *page_array = NULL;
+    frameno_t *page_array = NULL;
     struct load_funcs load_funcs;
     struct domain_setup_info dsi;
     unsigned long vinitrd_start;
@@ -490,7 +491,7 @@ static int setup_guest(int xc_handle,
 
     start_page = dsi.v_start >> PAGE_SHIFT;
     pgnr = (v_end - dsi.v_start) >> PAGE_SHIFT;
-    if ( (page_array = malloc(pgnr * sizeof(unsigned long))) == NULL )
+    if ( (page_array = malloc(pgnr * sizeof(frameno_t))) == NULL )
     {
         PERROR("Could not allocate memory");
         goto error_out;
@@ -614,11 +615,11 @@ static int setup_guest(int xc_handle,
                        const char *cmdline,
                        unsigned long shared_info_frame,
                        unsigned long flags,
-                       unsigned int store_evtchn, unsigned long *store_mfn,
-                       unsigned int console_evtchn, unsigned long *console_mfn,
+                       unsigned int store_evtchn, frameno_t *store_mfn,
+                       unsigned int console_evtchn, frameno_t *console_mfn,
                        uint32_t required_features[XENFEAT_NR_SUBMAPS])
 {
-    unsigned long *page_array = NULL;
+    frameno_t *page_array = NULL;
     unsigned long count, i, hypercall_pfn;
     start_info_t *start_info;
     shared_info_t *shared_info;
@@ -629,7 +630,7 @@ static int setup_guest(int xc_handle,
 
     unsigned long nr_pt_pages;
     unsigned long physmap_pfn;
-    unsigned long *physmap, *physmap_e;
+    frameno_t *physmap, *physmap_e;
 
     struct load_funcs load_funcs;
     struct domain_setup_info dsi;
@@ -782,7 +783,7 @@ static int setup_guest(int xc_handle,
         goto error_out;
     }
 
-    if ( (page_array = malloc(nr_pages * sizeof(unsigned long))) == NULL )
+    if ( (page_array = malloc(nr_pages * sizeof(frameno_t))) == NULL )
     {
         PERROR("Could not allocate memory");
         goto error_out;
@@ -872,8 +873,8 @@ static int setup_guest(int xc_handle,
             ((uint64_t)page_array[count] << PAGE_SHIFT) | MMU_MACHPHYS_UPDATE,
             count) )
         {
-            fprintf(stderr,"m2p update failure p=%lx m=%lx\n",
-                    count, page_array[count]);
+            fprintf(stderr,"m2p update failure p=%lx m=%"PRIx64"\n",
+                    count, (unsigned long long)page_array[count]);
             munmap(physmap, PAGE_SIZE);
             goto error_out;
         }
@@ -1041,9 +1042,9 @@ static int xc_linux_build_internal(int x
                                    const char *features,
                                    unsigned long flags,
                                    unsigned int store_evtchn,
-                                   unsigned long *store_mfn,
+                                   frameno_t *store_mfn,
                                    unsigned int console_evtchn,
-                                   unsigned long *console_mfn)
+                                   frameno_t *console_mfn)
 {
     dom0_op_t launch_op;
     DECLARE_DOM0_OP;
@@ -1201,9 +1202,9 @@ int xc_linux_build_mem(int xc_handle,
                        const char *features,
                        unsigned long flags,
                        unsigned int store_evtchn,
-                       unsigned long *store_mfn,
+                       frameno_t *store_mfn,
                        unsigned int console_evtchn,
-                       unsigned long *console_mfn)
+                       frameno_t *console_mfn)
 {
     int            sts;
     char          *img_buf;
@@ -1267,9 +1268,9 @@ int xc_linux_build(int xc_handle,
                    const char *features,
                    unsigned long flags,
                    unsigned int store_evtchn,
-                   unsigned long *store_mfn,
+                   frameno_t *store_mfn,
                    unsigned int console_evtchn,
-                   unsigned long *console_mfn)
+                   frameno_t *console_mfn)
 {
     char *image = NULL;
     unsigned long image_size;
diff -r c4eead8a925b tools/libxc/xc_linux_restore.c
--- a/tools/libxc/xc_linux_restore.c    Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/libxc/xc_linux_restore.c    Wed Apr 19 11:39:31 2006 -0500
@@ -104,18 +104,18 @@ int uncanonicalize_pagetable(unsigned lo
 
 int xc_linux_restore(int xc_handle, int io_fd,
                      uint32_t dom, unsigned long nr_pfns,
-                     unsigned int store_evtchn, unsigned long *store_mfn,
-                     unsigned int console_evtchn, unsigned long *console_mfn)
+                     unsigned int store_evtchn, frameno_t *store_mfn,
+                     unsigned int console_evtchn, frameno_t *console_mfn)
 {
     DECLARE_DOM0_OP;
     int rc = 1, i, n;
-    unsigned long mfn, pfn;
+    frameno_t mfn, pfn;
     unsigned int prev_pc, this_pc;
     int verify = 0;
     int nraces = 0;
 
     /* The new domain's shared-info frame number. */
-    unsigned long shared_info_frame;
+    frameno_t shared_info_frame;
     unsigned char shared_info_page[PAGE_SIZE]; /* saved contents from file */
     shared_info_t *shared_info = (shared_info_t *)shared_info_page;
 
@@ -126,7 +126,7 @@ int xc_linux_restore(int xc_handle, int 
     unsigned long *pfn_type = NULL;
 
     /* A table of MFNs to map in the current region */
-    unsigned long *region_mfn = NULL;
+    frameno_t *region_mfn = NULL;
 
     /* Types of the pfns in the current region */
     unsigned long region_pfn_type[MAX_BATCH_SIZE];
@@ -135,7 +135,7 @@ int xc_linux_restore(int xc_handle, int 
     unsigned long *page = NULL;
 
     /* A copy of the pfn-to-mfn table frame list. */
-    unsigned long *p2m_frame_list = NULL;
+    frameno_t *p2m_frame_list = NULL;
 
     /* A temporary mapping of the guest's start_info page. */
     start_info_t *start_info;
@@ -183,9 +183,9 @@ int xc_linux_restore(int xc_handle, int 
 
 
     /* We want zeroed memory so use calloc rather than malloc. */
-    p2m        = calloc(sizeof(unsigned long), max_pfn);
+    p2m        = calloc(sizeof(frameno_t), max_pfn);
     pfn_type   = calloc(sizeof(unsigned long), max_pfn);
-    region_mfn = calloc(sizeof(unsigned long), MAX_BATCH_SIZE);
+    region_mfn = calloc(sizeof(frameno_t), MAX_BATCH_SIZE);
 
     if ((p2m == NULL) || (pfn_type == NULL) || (region_mfn == NULL)) {
         ERR("memory alloc failed");
@@ -193,7 +193,7 @@ int xc_linux_restore(int xc_handle, int 
         goto out;
     }
 
-    if (mlock(region_mfn, sizeof(unsigned long) * MAX_BATCH_SIZE)) {
+    if (mlock(region_mfn, sizeof(frameno_t) * MAX_BATCH_SIZE)) {
         ERR("Could not mlock region_mfn");
         goto out;
     }
diff -r c4eead8a925b tools/libxc/xc_linux_save.c
--- a/tools/libxc/xc_linux_save.c       Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/libxc/xc_linux_save.c       Wed Apr 19 11:39:31 2006 -0500
@@ -27,7 +27,7 @@
 
 
 /* max mfn of the whole machine */
-static unsigned long max_mfn;
+static frameno_t max_mfn;
 
 /* virtual starting address of the hypervisor */
 static unsigned long hvirt_start;
@@ -36,13 +36,13 @@ static unsigned int pt_levels;
 static unsigned int pt_levels;
 
 /* total number of pages used by the current guest */
-static unsigned long max_pfn;
+static frameno_t max_pfn;
 
 /* Live mapping of the table mapping each PFN to its current MFN. */
-static unsigned long *live_p2m = NULL;
+static frameno_t *live_p2m = NULL;
 
 /* Live mapping of system MFN to PFN table. */
-static unsigned long *live_m2p = NULL;
+static frameno_t *live_m2p = NULL;
 
 /* grep fodder: machine_to_phys */
 
@@ -324,7 +324,7 @@ static int print_stats(int xc_handle, ui
 }
 
 
-static int analysis_phase(int xc_handle, uint32_t domid, int max_pfn,
+static int analysis_phase(int xc_handle, uint32_t domid, frameno_t max_pfn,
                           unsigned long *arr, int runs)
 {
     long long start, now;
@@ -508,14 +508,14 @@ static unsigned long *xc_map_m2p(int xc_
     privcmd_mmap_t ioctlx;
     privcmd_mmap_entry_t *entries;
     unsigned long m2p_chunks, m2p_size;
-    unsigned long *m2p;
+    frameno_t *m2p; 
     int i, rc;
 
     m2p_size   = M2P_SIZE(max_mfn);
     m2p_chunks = M2P_CHUNKS(max_mfn);
 
     xmml.max_extents = m2p_chunks;
-    if (!(xmml.extent_start = malloc(m2p_chunks * sizeof(unsigned long)))) {
+    if (!(xmml.extent_start = malloc(m2p_chunks * sizeof(frameno_t)))) { 
         ERR("failed to allocate space for m2p mfns");
         return NULL;
     }
@@ -571,7 +571,7 @@ int xc_linux_save(int xc_handle, int io_
     int sent_last_iter, skip_this_iter;
 
     /* The new domain's shared-info frame number. */
-    unsigned long shared_info_frame;
+    frameno_t shared_info_frame;
 
     /* A copy of the CPU context of the guest. */
     vcpu_guest_context_t ctxt;
@@ -584,11 +584,11 @@ int xc_linux_save(int xc_handle, int io_
     char page[PAGE_SIZE];
 
     /* Double and single indirect references to the live P2M table */
-    unsigned long *live_p2m_frame_list_list = NULL;
-    unsigned long *live_p2m_frame_list = NULL;
+    frameno_t *live_p2m_frame_list_list = NULL;
+    frameno_t *live_p2m_frame_list = NULL;
 
     /* A copy of the pfn-to-mfn table frame list. */
-    unsigned long *p2m_frame_list = NULL;
+    frameno_t *p2m_frame_list = NULL;
 
     /* Live mapping of shared info structure */
     shared_info_t *live_shinfo = NULL;
@@ -713,11 +713,11 @@ int xc_linux_save(int xc_handle, int io_
     memcpy(p2m_frame_list, live_p2m_frame_list, P2M_FL_SIZE);
 
     /* Canonicalise the pfn-to-mfn table frame-number list. */
-    for (i = 0; i < max_pfn; i += ulpp) {
-        if (!translate_mfn_to_pfn(&p2m_frame_list[i/ulpp])) {
+    for (i = 0; i < max_pfn; i += fpp) {
+        if (!translate_mfn_to_pfn(&p2m_frame_list[i/fpp])) {
             ERR("Frame# in pfn-to-mfn frame list is not in pseudophys");
-            ERR("entry %d: p2m_frame_list[%ld] is 0x%lx", i, i/ulpp,
-                p2m_frame_list[i/ulpp]);
+            ERR("entry %d: p2m_frame_list[%ld] is 0x"PRIx64, i, i/fpp,
+                p2m_frame_list[i/fpp]);
             goto out;
         }
     }
@@ -819,7 +819,7 @@ int xc_linux_save(int xc_handle, int io_
 
     /* Start writing out the saved-domain record. */
 
-    if(!write_exact(io_fd, &max_pfn, sizeof(unsigned long))) {
+    if(!write_exact(io_fd, &max_pfn, sizeof(frameno_t))) {
         ERR("write: max_pfn");
         goto out;
     }
diff -r c4eead8a925b tools/libxc/xc_load_elf.c
--- a/tools/libxc/xc_load_elf.c Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/libxc/xc_load_elf.c Wed Apr 19 11:39:31 2006 -0500
@@ -24,10 +24,10 @@ static int
 static int
 loadelfimage(
     const char *image, unsigned long image_size, int xch, uint32_t dom,
-    unsigned long *parray, struct domain_setup_info *dsi);
+    frameno_t *parray, struct domain_setup_info *dsi);
 static int
 loadelfsymtab(
-    const char *image, int xch, uint32_t dom, unsigned long *parray,
+    const char *image, int xch, uint32_t dom, frameno_t *parray,
     struct domain_setup_info *dsi);
 
 int probe_elf(const char *image,
@@ -187,7 +187,7 @@ static int
 static int
 loadelfimage(
     const char *image, unsigned long elfsize, int xch, uint32_t dom,
-    unsigned long *parray, struct domain_setup_info *dsi)
+    frameno_t *parray, struct domain_setup_info *dsi)
 {
     Elf_Ehdr *ehdr = (Elf_Ehdr *)image;
     Elf_Phdr *phdr;
@@ -237,7 +237,7 @@ loadelfimage(
 
 static int
 loadelfsymtab(
-    const char *image, int xch, uint32_t dom, unsigned long *parray,
+    const char *image, int xch, uint32_t dom, frameno_t *parray,
     struct domain_setup_info *dsi)
 {
     Elf_Ehdr *ehdr = (Elf_Ehdr *)image, *sym_ehdr;
diff -r c4eead8a925b tools/libxc/xc_private.c
--- a/tools/libxc/xc_private.c  Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/libxc/xc_private.c  Wed Apr 19 11:39:31 2006 -0500
@@ -8,7 +8,7 @@
 #include <xen/memory.h>
 
 void *xc_map_foreign_batch(int xc_handle, uint32_t dom, int prot,
-                           unsigned long *arr, int num )
+                           frameno_t *arr, int num )
 {
     privcmd_mmapbatch_t ioctlx;
     void *addr;
@@ -36,7 +36,7 @@ void *xc_map_foreign_batch(int xc_handle
 
 void *xc_map_foreign_range(int xc_handle, uint32_t dom,
                            int size, int prot,
-                           unsigned long mfn )
+                           frameno_t mfn )
 {
     privcmd_mmap_t ioctlx;
     privcmd_mmap_entry_t entry;
@@ -309,7 +309,7 @@ long long xc_domain_get_cpu_usage( int x
 
 int xc_get_pfn_list(int xc_handle,
                     uint32_t domid,
-                    unsigned long *pfn_buf,
+                    frameno_t *pfn_buf, 
                     unsigned long max_pfns)
 {
     DECLARE_DOM0_OP;
@@ -320,10 +320,10 @@ int xc_get_pfn_list(int xc_handle,
     op.u.getmemlist.buffer   = pfn_buf;
 
 #ifdef VALGRIND
-    memset(pfn_buf, 0, max_pfns * sizeof(unsigned long));
+    memset(pfn_buf, 0, max_pfns * sizeof(frameno_t));
 #endif
 
-    if ( mlock(pfn_buf, max_pfns * sizeof(unsigned long)) != 0 )
+    if ( mlock(pfn_buf, max_pfns * sizeof(frameno_t)) != 0 )
     {
         PERROR("xc_get_pfn_list: pfn_buf mlock failed");
         return -1;
@@ -331,7 +331,7 @@ int xc_get_pfn_list(int xc_handle,
 
     ret = do_dom0_op(xc_handle, &op);
 
-    safe_munlock(pfn_buf, max_pfns * sizeof(unsigned long));
+    safe_munlock(pfn_buf, max_pfns * sizeof(frameno_t));
 
 #if 0
 #ifdef DEBUG
@@ -362,7 +362,7 @@ long xc_get_tot_pages(int xc_handle, uin
 
 int xc_copy_to_domain_page(int xc_handle,
                            uint32_t domid,
-                           unsigned long dst_pfn,
+                           frameno_t dst_pfn, 
                            const char *src_page)
 {
     void *vaddr = xc_map_foreign_range(
@@ -410,7 +410,7 @@ unsigned long xc_get_filesz(int fd)
 }
 
 void xc_map_memcpy(unsigned long dst, const char *src, unsigned long size,
-                   int xch, uint32_t dom, unsigned long *parray,
+                   int xch, uint32_t dom, frameno_t *parray,
                    unsigned long vstart)
 {
     char *va;
@@ -477,9 +477,9 @@ int xc_version(int xc_handle, int cmd, v
 }
 
 unsigned long xc_make_page_below_4G(
-    int xc_handle, uint32_t domid, unsigned long mfn)
-{
-    unsigned long new_mfn;
+    int xc_handle, uint32_t domid, frameno_t mfn)
+{
+    frameno_t new_mfn;
 
     if ( xc_domain_memory_decrease_reservation(
         xc_handle, domid, 1, 0, &mfn) != 0 )
diff -r c4eead8a925b tools/libxc/xenguest.h
--- a/tools/libxc/xenguest.h    Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/libxc/xenguest.h    Wed Apr 19 11:39:31 2006 -0500
@@ -39,8 +39,8 @@ int xc_linux_save(int xc_handle, int io_
  */
 int xc_linux_restore(int xc_handle, int io_fd, uint32_t dom,
                      unsigned long nr_pfns, unsigned int store_evtchn,
-                     unsigned long *store_mfn, unsigned int console_evtchn,
-                     unsigned long *console_mfn);
+                     frameno_t *store_mfn, unsigned int console_evtchn,
+                     frameno_t *console_mfn);
 
 /**
  * This function will create a domain for a paravirtualized Linux
@@ -66,9 +66,9 @@ int xc_linux_build(int xc_handle,
                    const char *features,
                    unsigned long flags,
                    unsigned int store_evtchn,
-                   unsigned long *store_mfn,
+                   frameno_t *store_mfn,
                    unsigned int console_evtchn,
-                   unsigned long *console_mfn);
+                   frameno_t *console_mfn);
 
 /**
  * This function will create a domain for a paravirtualized Linux
@@ -98,9 +98,9 @@ int xc_linux_build_mem(int xc_handle,
                        const char *features,
                        unsigned long flags,
                        unsigned int store_evtchn,
-                       unsigned long *store_mfn,
+                       frameno_t *store_mfn,
                        unsigned int console_evtchn,
-                       unsigned long *console_mfn);
+                       frameno_t *console_mfn);
 
 int xc_hvm_build(int xc_handle,
                  uint32_t domid,
@@ -111,7 +111,7 @@ int xc_hvm_build(int xc_handle,
                  unsigned int acpi,
                  unsigned int apic,
                  unsigned int store_evtchn,
-                 unsigned long *store_mfn);
+                 frameno_t *store_mfn);
 
 int xc_hvm_build_mem(int xc_handle,
                      uint32_t domid,
@@ -123,6 +123,6 @@ int xc_hvm_build_mem(int xc_handle,
                      unsigned int acpi,
                      unsigned int apic,
                      unsigned int store_evtchn,
-                     unsigned long *store_mfn);
+                     frameno_t *store_mfn);
 
 #endif /* XENGUEST_H */
diff -r c4eead8a925b tools/libxc/xg_save_restore.h
--- a/tools/libxc/xg_save_restore.h     Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/libxc/xg_save_restore.h     Wed Apr 19 11:39:31 2006 -0500
@@ -105,23 +105,23 @@ static int get_platform_info(int xc_hand
 */
 #define M2P_SHIFT       L2_PAGETABLE_SHIFT_PAE
 #define M2P_CHUNK_SIZE  (1 << M2P_SHIFT)
-#define M2P_SIZE(_m)    ROUNDUP(((_m) * sizeof(unsigned long)), M2P_SHIFT)
+#define M2P_SIZE(_m)    ROUNDUP(((_m) * sizeof(frameno_t)), M2P_SHIFT)
 #define M2P_CHUNKS(_m)  (M2P_SIZE((_m)) >> M2P_SHIFT)
 
 /* Size in bytes of the P2M (rounded up to the nearest PAGE_SIZE bytes) */
-#define P2M_SIZE        ROUNDUP((max_pfn * sizeof(unsigned long)), PAGE_SHIFT)
+#define P2M_SIZE        ROUNDUP((max_pfn * sizeof(frameno_t)), PAGE_SHIFT)
 
 /* Number of unsigned longs in a page */
-#define ulpp            (PAGE_SIZE/sizeof(unsigned long))
+#define fpp            (PAGE_SIZE/sizeof(frameno_t))
 
 /* Number of entries in the pfn_to_mfn_frame_list */
-#define P2M_FL_ENTRIES  (((max_pfn)+ulpp-1)/ulpp)
+#define P2M_FL_ENTRIES  (((max_pfn)+fpp-1)/fpp)
 
 /* Size in bytes of the pfn_to_mfn_frame_list     */
-#define P2M_FL_SIZE     ((P2M_FL_ENTRIES)*sizeof(unsigned long))
+#define P2M_FL_SIZE     ((P2M_FL_ENTRIES)*sizeof(frameno_t))
 
 /* Number of entries in the pfn_to_mfn_frame_list_list */
-#define P2M_FLL_ENTRIES (((max_pfn)+(ulpp*ulpp)-1)/(ulpp*ulpp))
+#define P2M_FLL_ENTRIES (((max_pfn)+(fpp*fpp)-1)/(fpp*fpp))
 
 /* Current guests allow 8MB 'slack' in their P2M */
 #define NR_SLACK_ENTRIES   ((8 * 1024 * 1024) / PAGE_SIZE)
diff -r c4eead8a925b tools/python/xen/lowlevel/xc/xc.c
--- a/tools/python/xen/lowlevel/xc/xc.c Sun Apr 16 15:41:31 2006 +0100
+++ b/tools/python/xen/lowlevel/xc/xc.c Wed Apr 19 11:39:31 2006 -0500
@@ -371,7 +371,7 @@ static PyObject *pyxc_hvm_build(XcObject
     int pae  = 0;
     int acpi = 0;
     int apic = 0;
-    unsigned long store_mfn = 0;
+    frameno_t store_mfn = 0;
 
     static char *kwd_list[] = { "dom", "store_evtchn",
                                "memsize", "image", "vcpus", "pae", "acpi", 
"apic",
diff -r c4eead8a925b xen/common/memory.c
--- a/xen/common/memory.c       Sun Apr 16 15:41:31 2006 +0100
+++ b/xen/common/memory.c       Wed Apr 19 11:39:31 2006 -0500
@@ -31,7 +31,7 @@ static long
 static long
 increase_reservation(
     struct domain *d, 
-    GUEST_HANDLE(ulong) extent_list,
+    GUEST_HANDLE(frameno_t) extent_list,
     unsigned int   nr_extents,
     unsigned int   extent_order,
     unsigned int   flags,
@@ -80,7 +80,7 @@ static long
 static long
 populate_physmap(
     struct domain *d, 
-    GUEST_HANDLE(ulong) extent_list,
+    GUEST_HANDLE(frameno_t) extent_list,
     unsigned int  nr_extents,
     unsigned int  extent_order,
     unsigned int  flags,
@@ -177,7 +177,7 @@ static long
 static long
 decrease_reservation(
     struct domain *d,
-    GUEST_HANDLE(ulong) extent_list,
+    GUEST_HANDLE(frameno_t) extent_list,
     unsigned int   nr_extents,
     unsigned int   extent_order,
     unsigned int   flags,
diff -r c4eead8a925b xen/include/asm-x86/shadow.h
--- a/xen/include/asm-x86/shadow.h      Sun Apr 16 15:41:31 2006 +0100
+++ b/xen/include/asm-x86/shadow.h      Wed Apr 19 11:39:31 2006 -0500
@@ -1231,8 +1231,8 @@ static inline unsigned long __shadow_sta
  * Either returns PGT_none, or PGT_l{1,2,3,4}_page_table.
  */
 static inline u32
-shadow_max_pgtable_type(struct domain *d, unsigned long gpfn,
-                        unsigned long *smfn)
+shadow_max_pgtable_type(struct domain *d, frameno_t gpfn,
+                        frameno_t *smfn)
 {
     struct shadow_status *x;
     u32 pttype = PGT_none, type;
@@ -1503,7 +1503,7 @@ static inline void guest_physmap_add_pag
 }
 
 static inline void guest_physmap_remove_page(
-    struct domain *d, unsigned long gpfn, unsigned long mfn)
+    struct domain *d, frameno_t gpfn, frameno_t mfn)
 {
     struct domain_mmap_cache c1, c2;
     unsigned long type;
diff -r c4eead8a925b xen/include/public/arch-ia64.h
--- a/xen/include/public/arch-ia64.h    Sun Apr 16 15:41:31 2006 +0100
+++ b/xen/include/public/arch-ia64.h    Wed Apr 19 11:39:31 2006 -0500
@@ -27,6 +27,9 @@ DEFINE_GUEST_HANDLE(int);
 DEFINE_GUEST_HANDLE(int);
 DEFINE_GUEST_HANDLE(long);
 DEFINE_GUEST_HANDLE(void);
+
+typedef unsigned long frameno_t;
+DEFINE_GUEST_HANDLE(frameno_t);
 #endif
 
 /* Maximum number of virtual CPUs in multi-processor guests. */
@@ -295,7 +298,7 @@ typedef mapped_regs_t vpd_t;
 
 typedef struct {
     unsigned int flags;
-    unsigned long start_info_pfn;
+    frameno_t start_info_pfn;
 } arch_shared_info_t;
 
 typedef struct {
diff -r c4eead8a925b xen/include/public/arch-x86_32.h
--- a/xen/include/public/arch-x86_32.h  Sun Apr 16 15:41:31 2006 +0100
+++ b/xen/include/public/arch-x86_32.h  Wed Apr 19 11:39:31 2006 -0500
@@ -29,6 +29,9 @@ DEFINE_GUEST_HANDLE(int);
 DEFINE_GUEST_HANDLE(int);
 DEFINE_GUEST_HANDLE(long);
 DEFINE_GUEST_HANDLE(void);
+
+typedef unsigned long frameno_t;
+DEFINE_GUEST_HANDLE(frameno_t);
 #endif
 
 /*
@@ -157,9 +160,9 @@ DEFINE_GUEST_HANDLE(vcpu_guest_context_t
 DEFINE_GUEST_HANDLE(vcpu_guest_context_t);
 
 typedef struct arch_shared_info {
-    unsigned long max_pfn;                  /* max pfn that appears in table */
+    frameno_t max_pfn;                  /* max pfn that appears in table */
     /* Frame containing list of mfns containing list of mfns containing p2m. */
-    unsigned long pfn_to_mfn_frame_list_list;
+    frameno_t pfn_to_mfn_frame_list_list;
     unsigned long nmi_reason;
 } arch_shared_info_t;
 
diff -r c4eead8a925b xen/include/public/arch-x86_64.h
--- a/xen/include/public/arch-x86_64.h  Sun Apr 16 15:41:31 2006 +0100
+++ b/xen/include/public/arch-x86_64.h  Wed Apr 19 11:39:31 2006 -0500
@@ -29,6 +29,9 @@ DEFINE_GUEST_HANDLE(int);
 DEFINE_GUEST_HANDLE(int);
 DEFINE_GUEST_HANDLE(long);
 DEFINE_GUEST_HANDLE(void);
+
+typedef unsigned long frameno_t;
+DEFINE_GUEST_HANDLE(frameno_t);
 #endif
 
 /*
@@ -233,9 +236,9 @@ DEFINE_GUEST_HANDLE(vcpu_guest_context_t
 DEFINE_GUEST_HANDLE(vcpu_guest_context_t);
 
 typedef struct arch_shared_info {
-    unsigned long max_pfn;                  /* max pfn that appears in table */
+    frameno_t max_pfn;                  /* max pfn that appears in table */
     /* Frame containing list of mfns containing list of mfns containing p2m. */
-    unsigned long pfn_to_mfn_frame_list_list;
+    frameno_t pfn_to_mfn_frame_list_list;
     unsigned long nmi_reason;
 } arch_shared_info_t;
 
diff -r c4eead8a925b xen/include/public/dom0_ops.h
--- a/xen/include/public/dom0_ops.h     Sun Apr 16 15:41:31 2006 +0100
+++ b/xen/include/public/dom0_ops.h     Wed Apr 19 11:39:31 2006 -0500
@@ -28,7 +28,7 @@ typedef struct dom0_getmemlist {
     /* IN variables. */
     domid_t       domain;
     unsigned long max_pfns;
-    GUEST_HANDLE(ulong) buffer;
+    GUEST_HANDLE(frameno_t) buffer;
     /* OUT variables. */
     unsigned long num_pfns;
 } dom0_getmemlist_t;
@@ -468,7 +468,7 @@ DEFINE_GUEST_HANDLE(dom0_iomem_permissio
 #define DOM0_HYPERCALL_INIT   48
 typedef struct dom0_hypercall_init {
     domid_t  domain;          /* domain to be affected */
-    unsigned long mfn;        /* machine frame to be initialised */
+    frameno_t mfn;            /* machine frame to be initialised */
 } dom0_hypercall_init_t;
 DEFINE_GUEST_HANDLE(dom0_hypercall_init_t);
 
diff -r c4eead8a925b xen/include/public/memory.h
--- a/xen/include/public/memory.h       Sun Apr 16 15:41:31 2006 +0100
+++ b/xen/include/public/memory.h       Wed Apr 19 11:39:31 2006 -0500
@@ -29,7 +29,7 @@ typedef struct xen_memory_reservation {
      *   OUT: GMFN bases of extents that were allocated
      *   (NB. This command also updates the mach_to_phys translation table)
      */
-    GUEST_HANDLE(ulong) extent_start;
+    GUEST_HANDLE(frameno_t) extent_start;
 
     /* Number of extents, and size/alignment of each (2^extent_order pages). */
     unsigned long  nr_extents;



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