struct xc_dom_image *xc_dom_allocate(const char *cmdline, const char *features) { struct xc_dom_image *dom; xc_dom_printf("%s: cmdline=\"%s\", features=\"%s\"\n", __FUNCTION__, cmdline, features); dom = malloc(sizeof(*dom)); if ( !dom ) goto err; memset(dom, 0, sizeof(*dom)); if ( cmdline ) dom->cmdline = xc_dom_strdup(dom, cmdline); if ( features ) elf_xen_parse_features(features, dom->f_requested, NULL); dom->parms.virt_base = UNSET_ADDR; dom->parms.virt_entry = UNSET_ADDR; dom->parms.virt_hypercall = UNSET_ADDR; dom->parms.virt_hv_start_low = UNSET_ADDR; dom->parms.elf_paddr_offset = UNSET_ADDR; dom->alloc_malloc += sizeof(*dom); return dom; err: if ( dom ) xc_dom_release(dom); return NULL; }
struct xc_dom_image *xc_dom_allocate(xc_interface *xch, const char *cmdline, const char *features) { struct xc_dom_image *dom; xc_dom_printf(xch, "%s: cmdline=\"%s\", features=\"%s\"", __FUNCTION__, cmdline, features); dom = malloc(sizeof(*dom)); if ( !dom ) goto err; memset(dom, 0, sizeof(*dom)); dom->xch = xch; dom->max_kernel_size = XC_DOM_DECOMPRESS_MAX; dom->max_ramdisk_size = XC_DOM_DECOMPRESS_MAX; dom->max_devicetree_size = XC_DOM_DECOMPRESS_MAX; if ( cmdline ) dom->cmdline = xc_dom_strdup(dom, cmdline); if ( features ) elf_xen_parse_features(features, dom->f_requested, NULL); dom->parms.virt_base = UNSET_ADDR; dom->parms.virt_entry = UNSET_ADDR; dom->parms.virt_hypercall = UNSET_ADDR; dom->parms.virt_hv_start_low = UNSET_ADDR; dom->parms.elf_paddr_offset = UNSET_ADDR; dom->parms.p2m_base = UNSET_ADDR; dom->flags = SIF_VIRT_P2M_4TOOLS; dom->alloc_malloc += sizeof(*dom); return dom; err: if ( dom ) xc_dom_release(dom); return NULL; }