domid_t dom);
/* System wide memory properties */
-long xc_maximum_ram_page(xc_interface *xch);
+int xc_maximum_ram_page(xc_interface *xch, unsigned long *max_mfn);
/* Get current total pages allocated to a domain. */
long xc_get_tot_pages(xc_interface *xch, uint32_t domid);
uint32_t status;
xen_pfn_t new_mfn, gpfn;
xen_pfn_t *m2p_table;
- int max_mfn;
+ unsigned long max_mfn;
if ( xc_domain_getinfo(xch, domid, 1, &info) != 1 )
{
}
/* Map M2P and obtain gpfn */
- max_mfn = xc_maximum_ram_page(xch);
- if ( !(m2p_table = xc_map_m2p(xch, max_mfn, PROT_READ, NULL)) )
+ rc = xc_maximum_ram_page(xch, &max_mfn);
+ if ( rc || !(m2p_table = xc_map_m2p(xch, max_mfn, PROT_READ, NULL)) )
{
PERROR("Failed to map live M2P table");
return -1;
return ret;
}
-long xc_maximum_ram_page(xc_interface *xch)
+int xc_maximum_ram_page(xc_interface *xch, unsigned long *max_mfn)
{
- return do_memory_op(xch, XENMEM_maximum_ram_page, NULL, 0);
+ long rc = do_memory_op(xch, XENMEM_maximum_ram_page, NULL, 0);
+
+ if ( rc >= 0 )
+ {
+ *max_mfn = rc;
+ rc = 0;
+ }
+ return rc;
}
long long xc_domain_get_cpu_usage( xc_interface *xch, domid_t domid, int vcpu )
if (xc_version(xch, XENVER_capabilities, &xen_caps) != 0)
return 0;
- *max_mfn = xc_maximum_ram_page(xch);
+ if (xc_maximum_ram_page(xch, max_mfn))
+ return 0;
*hvirt_start = xen_params.virt_start;
int dump_m2p_func(int argc, char *argv[])
{
unsigned long i;
- long max_mfn;
+ unsigned long max_mfn;
xen_pfn_t *m2p_table;
if ( argc > 0 )
}
/* Map M2P and obtain gpfn */
- max_mfn = xc_maximum_ram_page(xch);
- if ( max_mfn < 0 )
+ if ( xc_maximum_ram_page(xch, &max_mfn) < 0 );
{
ERROR("Failed to get the maximum mfn");
return -1;
}
/* Map M2P and obtain gpfn */
- max_mfn = xc_maximum_ram_page(xch);
- if ( (mfn > max_mfn) ||
+ rc = xc_maximum_ram_page(xch, &max_mfn);
+ if ( rc || (mfn > max_mfn) ||
!(m2p_table = xc_map_m2p(xch, max_mfn, PROT_READ, NULL)) )
{
xc_unmap_domain_meminfo(xch, &minfo);