diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2012-01-31 16:34:38 +0000 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2012-01-31 16:34:38 +0000 |
commit | 46f200f5e3dbc3d3f0e8ab2d11012bd6fda30ff4 (patch) | |
tree | b5d7417f3d806c2841585640556058d13f26adba /tools/libxl | |
parent | 292f8c116250eed310e35bdee25b339c3d6c9c84 (diff) | |
download | xen-46f200f5e3dbc3d3f0e8ab2d11012bd6fda30ff4.tar.gz xen-46f200f5e3dbc3d3f0e8ab2d11012bd6fda30ff4.tar.bz2 xen-46f200f5e3dbc3d3f0e8ab2d11012bd6fda30ff4.zip |
libxl: remove libxl_device_model_info.
All that is left here is the target domain's domid which we can pass around as
a parameter.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Diffstat (limited to 'tools/libxl')
-rw-r--r-- | tools/libxl/libxl.c | 2 | ||||
-rw-r--r-- | tools/libxl/libxl.h | 7 | ||||
-rw-r--r-- | tools/libxl/libxl_create.c | 33 | ||||
-rw-r--r-- | tools/libxl/libxl_dm.c | 162 | ||||
-rw-r--r-- | tools/libxl/libxl_dom.c | 6 | ||||
-rw-r--r-- | tools/libxl/libxl_internal.h | 9 | ||||
-rw-r--r-- | tools/libxl/libxl_types.idl | 6 | ||||
-rw-r--r-- | tools/libxl/xl_cmdimpl.c | 24 |
8 files changed, 102 insertions, 147 deletions
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 86f30c4669..60487fceb8 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -2621,7 +2621,7 @@ out: } int libxl_domain_need_memory(libxl_ctx *ctx, libxl_domain_build_info *b_info, - libxl_device_model_info *dm_info, uint32_t *need_memkb) + uint32_t *need_memkb) { GC_INIT(ctx); int rc = ERROR_INVAL; diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index c4328682fb..e7e4f4ec68 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -295,7 +295,6 @@ typedef struct { typedef struct { libxl_domain_create_info c_info; libxl_domain_build_info b_info; - libxl_device_model_info dm_info; int num_disks, num_vifs, num_pcidevs, num_vfbs, num_vkbs; @@ -323,10 +322,6 @@ int libxl_init_create_info(libxl_ctx *ctx, libxl_domain_create_info *c_info); int libxl_init_build_info(libxl_ctx *ctx, libxl_domain_build_info *b_info, libxl_domain_create_info *c_info); -int libxl_init_dm_info(libxl_ctx *ctx, - libxl_device_model_info *dm_info, - libxl_domain_create_info *c_info, - libxl_domain_build_info *b_info); typedef int (*libxl_console_ready)(libxl_ctx *ctx, uint32_t domid, void *priv); int libxl_domain_create_new(libxl_ctx *ctx, libxl_domain_config *d_config, libxl_console_ready cb, void *priv, uint32_t *domid); int libxl_domain_create_restore(libxl_ctx *ctx, libxl_domain_config *d_config, libxl_console_ready cb, void *priv, uint32_t *domid, int restore_fd); @@ -379,7 +374,7 @@ int libxl_set_memory_target(libxl_ctx *ctx, uint32_t domid, int32_t target_memkb int libxl_get_memory_target(libxl_ctx *ctx, uint32_t domid, uint32_t *out_target); /* how much free memory in the system a domain needs to be built */ int libxl_domain_need_memory(libxl_ctx *ctx, libxl_domain_build_info *b_info, - libxl_device_model_info *dm_info, uint32_t *need_memkb); + uint32_t *need_memkb); /* how much free memory is available in the system */ int libxl_get_free_memory(libxl_ctx *ctx, uint32_t *memkb); /* wait for a given amount of memory to be free in the system */ diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index e33eb667ed..f28d814d20 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -48,7 +48,6 @@ void libxl_domain_config_dispose(libxl_domain_config *d_config) libxl_domain_create_info_dispose(&d_config->c_info); libxl_domain_build_info_dispose(&d_config->b_info); - libxl_device_model_info_dispose(&d_config->dm_info); } int libxl_init_create_info(libxl_ctx *ctx, libxl_domain_create_info *c_info) @@ -130,17 +129,6 @@ int libxl_init_build_info(libxl_ctx *ctx, return 0; } -int libxl_init_dm_info(libxl_ctx *ctx, - libxl_device_model_info *dm_info, - libxl_domain_create_info *c_info, - libxl_domain_build_info *b_info) -{ - memset(dm_info, '\0', sizeof(*dm_info)); - - - return 0; -} - static int init_console_info(libxl_device_console *console, int dev_num) { memset(console, 0x00, sizeof(libxl_device_console)); @@ -154,7 +142,6 @@ static int init_console_info(libxl_device_console *console, int dev_num) int libxl__domain_build(libxl__gc *gc, libxl_domain_build_info *info, - libxl_device_model_info *dm_info, uint32_t domid, libxl__domain_build_state *state) { @@ -170,7 +157,7 @@ int libxl__domain_build(libxl__gc *gc, switch (info->type) { case LIBXL_DOMAIN_TYPE_HVM: - ret = libxl__build_hvm(gc, domid, info, dm_info, state); + ret = libxl__build_hvm(gc, domid, info, state); if (ret) goto out; @@ -224,8 +211,7 @@ out: static int domain_restore(libxl__gc *gc, libxl_domain_build_info *info, uint32_t domid, int fd, - libxl__domain_build_state *state, - libxl_device_model_info *dm_info) + libxl__domain_build_state *state) { libxl_ctx *ctx = libxl__gc_owner(gc); char **vments = NULL, **localents = NULL; @@ -477,7 +463,6 @@ static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config, { libxl_ctx *ctx = libxl__gc_owner(gc); libxl__spawner_starting *dm_starting = 0; - libxl_device_model_info *dm_info = &d_config->dm_info; libxl__domain_build_state state; uint32_t domid; int i, ret; @@ -514,9 +499,9 @@ static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config, memset(&state, 0, sizeof(state)); if ( restore_fd >= 0 ) { - ret = domain_restore(gc, &d_config->b_info, domid, restore_fd, &state, dm_info); + ret = domain_restore(gc, &d_config->b_info, domid, restore_fd, &state); } else { - ret = libxl__domain_build(gc, &d_config->b_info, dm_info, domid, &state); + ret = libxl__domain_build(gc, &d_config->b_info, domid, &state); } if (ret) { @@ -563,8 +548,7 @@ static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config, libxl_device_vkb_add(ctx, domid, &vkb); libxl_device_vkb_dispose(&vkb); - dm_info->domid = domid; - ret = libxl__create_device_model(gc, d_config, dm_info, + ret = libxl__create_device_model(gc, domid, d_config, &state, &dm_starting); if (ret < 0) { LIBXL__LOG(ctx, LIBXL__LOG_ERROR, @@ -577,7 +561,6 @@ static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config, { int need_qemu = 0; libxl_device_console console; - libxl_device_model_info xenpv_dm_info; for (i = 0; i < d_config->num_vfbs; i++) { libxl_device_vfb_add(ctx, domid, &d_config->vfbs[i]); @@ -599,11 +582,7 @@ static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config, libxl_device_console_dispose(&console); if (need_qemu) { - /* only copy those useful configs */ - memset((void*)&xenpv_dm_info, 0, sizeof(libxl_device_model_info)); - - libxl__create_xenpv_qemu(gc, domid, d_config, - &xenpv_dm_info, &state, &dm_starting); + libxl__create_xenpv_qemu(gc, domid, d_config, &state, &dm_starting); } break; } diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index a102544aaf..8d540676bd 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -73,8 +73,7 @@ static const char *libxl__domain_bios(libxl__gc *gc, } } -static const libxl_vnc_info *dm_vnc(const libxl_domain_config *guest_config, - const libxl_device_model_info *info) +static const libxl_vnc_info *dm_vnc(const libxl_domain_config *guest_config) { const libxl_vnc_info *vnc = NULL; if (guest_config->b_info.type == LIBXL_DOMAIN_TYPE_HVM) { @@ -85,8 +84,7 @@ static const libxl_vnc_info *dm_vnc(const libxl_domain_config *guest_config, return vnc && vnc->enable ? vnc : NULL; } -static const libxl_sdl_info *dm_sdl(const libxl_domain_config *guest_config, - const libxl_device_model_info *info) +static const libxl_sdl_info *dm_sdl(const libxl_domain_config *guest_config) { const libxl_sdl_info *sdl = NULL; if (guest_config->b_info.type == LIBXL_DOMAIN_TYPE_HVM) { @@ -97,8 +95,7 @@ static const libxl_sdl_info *dm_sdl(const libxl_domain_config *guest_config, return sdl && sdl->enable ? sdl : NULL; } -static const char *dm_keymap(const libxl_domain_config *guest_config, - const libxl_device_model_info *info) +static const char *dm_keymap(const libxl_domain_config *guest_config) { if (guest_config->b_info.type == LIBXL_DOMAIN_TYPE_HVM) { return guest_config->b_info.u.hvm.keymap; @@ -109,18 +106,17 @@ static const char *dm_keymap(const libxl_domain_config *guest_config, } static char ** libxl__build_device_model_args_old(libxl__gc *gc, - const char *dm, + const char *dm, int domid, const libxl_domain_config *guest_config, - const libxl_device_model_info *info, const libxl__domain_build_state *state) { const libxl_domain_create_info *c_info = &guest_config->c_info; const libxl_domain_build_info *b_info = &guest_config->b_info; const libxl_device_nic *vifs = guest_config->vifs; - const libxl_vnc_info *vnc = dm_vnc(guest_config, info); - const libxl_sdl_info *sdl = dm_sdl(guest_config, info); + const libxl_vnc_info *vnc = dm_vnc(guest_config); + const libxl_sdl_info *sdl = dm_sdl(guest_config); const int num_vifs = guest_config->num_vifs; - const char *keymap = dm_keymap(guest_config, info); + const char *keymap = dm_keymap(guest_config); int i; flexarray_t *dm_args; dm_args = flexarray_make(16, 1); @@ -129,7 +125,7 @@ static char ** libxl__build_device_model_args_old(libxl__gc *gc, return NULL; flexarray_vappend(dm_args, dm, - "-d", libxl__sprintf(gc, "%d", info->domid), NULL); + "-d", libxl__sprintf(gc, "%d", domid), NULL); if (c_info->name) flexarray_vappend(dm_args, "-domain-name", c_info->name, NULL); @@ -225,7 +221,8 @@ static char ** libxl__build_device_model_args_old(libxl__gc *gc, LIBXL_MAC_FMT, LIBXL_MAC_BYTES(vifs[i].mac)); char *ifname; if (!vifs[i].ifname) - ifname = libxl__sprintf(gc, "tap%d.%d", info->domid, vifs[i].devid); + ifname = libxl__sprintf(gc, + "tap%d.%d", domid, vifs[i].devid); else ifname = vifs[i].ifname; flexarray_vappend(dm_args, @@ -320,9 +317,8 @@ static char *dm_spice_options(libxl__gc *gc, } static char ** libxl__build_device_model_args_new(libxl__gc *gc, - const char *dm, + const char *dm, int guest_domid, const libxl_domain_config *guest_config, - const libxl_device_model_info *info, const libxl__domain_build_state *state) { libxl_ctx *ctx = libxl__gc_owner(gc); @@ -332,9 +328,9 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc, const libxl_device_nic *vifs = guest_config->vifs; const int num_disks = guest_config->num_disks; const int num_vifs = guest_config->num_vifs; - const libxl_vnc_info *vnc = dm_vnc(guest_config, info); - const libxl_sdl_info *sdl = dm_sdl(guest_config, info); - const char *keymap = dm_keymap(guest_config, info); + const libxl_vnc_info *vnc = dm_vnc(guest_config); + const libxl_sdl_info *sdl = dm_sdl(guest_config); + const char *keymap = dm_keymap(guest_config); flexarray_t *dm_args; int i; @@ -343,14 +339,14 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc, return NULL; flexarray_vappend(dm_args, dm, - "-xen-domid", libxl__sprintf(gc, "%d", info->domid), NULL); + "-xen-domid", + libxl__sprintf(gc, "%d", guest_domid), NULL); flexarray_append(dm_args, "-chardev"); flexarray_append(dm_args, libxl__sprintf(gc, "socket,id=libxl-cmd," "path=%s/qmp-libxl-%d,server,nowait", - libxl_run_dir_path(), - info->domid)); + libxl_run_dir_path(), guest_domid)); flexarray_append(dm_args, "-mon"); flexarray_append(dm_args, "chardev=libxl-cmd,mode=control"); @@ -460,7 +456,8 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc, LIBXL_MAC_FMT, LIBXL_MAC_BYTES(vifs[i].mac)); char *ifname; if (!vifs[i].ifname) { - ifname = libxl__sprintf(gc, "tap%d.%d", info->domid, vifs[i].devid); + ifname = libxl__sprintf(gc, "tap%d.%d", + guest_domid, vifs[i].devid); } else { ifname = vifs[i].ifname; } @@ -581,18 +578,21 @@ static char ** libxl__build_device_model_args_new(libxl__gc *gc, } static char ** libxl__build_device_model_args(libxl__gc *gc, - const char *dm, + const char *dm, int guest_domid, const libxl_domain_config *guest_config, - const libxl_device_model_info *info, const libxl__domain_build_state *state) { libxl_ctx *ctx = libxl__gc_owner(gc); switch (guest_config->b_info.device_model_version) { case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL: - return libxl__build_device_model_args_old(gc, dm, guest_config, info, state); + return libxl__build_device_model_args_old(gc, dm, + guest_domid, guest_config, + state); case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN: - return libxl__build_device_model_args_new(gc, dm, guest_config, info, state); + return libxl__build_device_model_args_new(gc, dm, + guest_domid, guest_config, + state); default: LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "unknown device model version %d", guest_config->b_info.device_model_version); @@ -624,7 +624,9 @@ static int libxl__vfb_and_vkb_from_hvm_guest_config(libxl__gc *gc, return 0; } -static int libxl__write_dmargs(libxl__gc *gc, int domid, int guest_domid, char **args) +static int libxl__write_stub_dmargs(libxl__gc *gc, + int dm_domid, int guest_domid, + char **args) { libxl_ctx *ctx = libxl__gc_owner(gc); int i; @@ -636,7 +638,7 @@ static int libxl__write_dmargs(libxl__gc *gc, int domid, int guest_domid, char * roperm[0].id = 0; roperm[0].perms = XS_PERM_NONE; - roperm[1].id = domid; + roperm[1].id = dm_domid; roperm[1].perms = XS_PERM_READ; vm_path = libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "/local/domain/%d/vm", guest_domid)); @@ -673,8 +675,8 @@ retry_transaction: } static int libxl__create_stubdom(libxl__gc *gc, + int guest_domid, libxl_domain_config *guest_config, - libxl_device_model_info *info, libxl__domain_build_state *d_state, libxl__spawner_starting **starting_r) { @@ -685,12 +687,11 @@ static int libxl__create_stubdom(libxl__gc *gc, libxl_device_vfb vfb; libxl_device_vkb vkb; libxl__domain_build_state stubdom_state; - uint32_t domid; + uint32_t dm_domid; char **args; struct xs_permissions perm[2]; xs_transaction_t t; libxl__spawner_starting *dm_starting = 0; - libxl_device_model_info xenpv_dm_info; if (guest_config->b_info.device_model_version != LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL) { @@ -700,7 +701,8 @@ static int libxl__create_stubdom(libxl__gc *gc, memset(&dm_config.c_info, 0x00, sizeof(libxl_domain_create_info)); dm_config.c_info.type = LIBXL_DOMAIN_TYPE_PV; - dm_config.c_info.name = libxl__sprintf(gc, "%s-dm", libxl__domid_to_name(gc, info->domid)); + dm_config.c_info.name = libxl__sprintf(gc, "%s-dm", + libxl__domid_to_name(gc, guest_domid)); libxl_uuid_generate(&dm_config.c_info.uuid); @@ -713,7 +715,7 @@ static int libxl__create_stubdom(libxl__gc *gc, dm_config.b_info.type = LIBXL_DOMAIN_TYPE_PV; dm_config.b_info.u.pv.kernel.path = libxl__abs_path(gc, "ioemu-stubdom.gz", libxl_xenfirmwaredir_path()); - dm_config.b_info.u.pv.cmdline = libxl__sprintf(gc, " -d %d", info->domid); + dm_config.b_info.u.pv.cmdline = libxl__sprintf(gc, " -d %d", guest_domid); dm_config.b_info.u.pv.ramdisk.path = ""; dm_config.b_info.u.pv.features = ""; @@ -738,62 +740,69 @@ static int libxl__create_stubdom(libxl__gc *gc, dm_config.num_vkbs = 1; /* fixme: this function can leak the stubdom if it fails */ - domid = 0; - ret = libxl__domain_make(gc, &dm_config.c_info, &domid); + dm_domid = 0; + ret = libxl__domain_make(gc, &dm_config.c_info, &dm_domid); if (ret) goto out; - ret = libxl__domain_build(gc, &dm_config.b_info, info, domid, &stubdom_state); + ret = libxl__domain_build(gc, &dm_config.b_info, dm_domid, &stubdom_state); if (ret) goto out; - args = libxl__build_device_model_args(gc, "stubdom-dm", - guest_config, info, d_state); + args = libxl__build_device_model_args(gc, "stubdom-dm", guest_domid, + guest_config, d_state); if (!args) { ret = ERROR_FAIL; goto out; } - libxl__write_dmargs(gc, domid, info->domid, args); + libxl__write_stub_dmargs(gc, dm_domid, guest_domid, args); libxl__xs_write(gc, XBT_NULL, - libxl__sprintf(gc, "%s/image/device-model-domid", libxl__xs_get_dompath(gc, info->domid)), - "%d", domid); + libxl__sprintf(gc, "%s/image/device-model-domid", + libxl__xs_get_dompath(gc, guest_domid)), + "%d", dm_domid); libxl__xs_write(gc, XBT_NULL, - libxl__sprintf(gc, "%s/target", libxl__xs_get_dompath(gc, domid)), - "%d", info->domid); - ret = xc_domain_set_target(ctx->xch, domid, info->domid); + libxl__sprintf(gc, "%s/target", + libxl__xs_get_dompath(gc, dm_domid)), + "%d", guest_domid); + ret = xc_domain_set_target(ctx->xch, dm_domid, guest_domid); if (ret<0) { - LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "setting target domain %d -> %d", domid, info->domid); + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, + "setting target domain %d -> %d", + dm_domid, guest_domid); ret = ERROR_FAIL; goto out_free; } - xs_set_target(ctx->xsh, domid, info->domid); + xs_set_target(ctx->xsh, dm_domid, guest_domid); - perm[0].id = domid; + perm[0].id = dm_domid; perm[0].perms = XS_PERM_NONE; - perm[1].id = info->domid; + perm[1].id = guest_domid; perm[1].perms = XS_PERM_READ; retry_transaction: t = xs_transaction_start(ctx->xsh); - xs_mkdir(ctx->xsh, t, libxl__sprintf(gc, "/local/domain/0/device-model/%d", info->domid)); - xs_set_permissions(ctx->xsh, t, libxl__sprintf(gc, "/local/domain/0/device-model/%d", info->domid), perm, ARRAY_SIZE(perm)); + xs_mkdir(ctx->xsh, t, + libxl__sprintf(gc, "/local/domain/0/device-model/%d", guest_domid)); + xs_set_permissions(ctx->xsh, t, + libxl__sprintf(gc, "/local/domain/0/device-model/%d", guest_domid), + perm, ARRAY_SIZE(perm)); if (!xs_transaction_end(ctx->xsh, t, 0)) if (errno == EAGAIN) goto retry_transaction; for (i = 0; i < dm_config.num_disks; i++) { - ret = libxl_device_disk_add(ctx, domid, &dm_config.disks[i]); + ret = libxl_device_disk_add(ctx, dm_domid, &dm_config.disks[i]); if (ret) goto out_free; } for (i = 0; i < dm_config.num_vifs; i++) { - ret = libxl_device_nic_add(ctx, domid, &dm_config.vifs[i]); + ret = libxl_device_nic_add(ctx, dm_domid, &dm_config.vifs[i]); if (ret) goto out_free; } - ret = libxl_device_vfb_add(ctx, domid, &dm_config.vfbs[0]); + ret = libxl_device_vfb_add(ctx, dm_domid, &dm_config.vfbs[0]); if (ret) goto out_free; - ret = libxl_device_vkb_add(ctx, domid, &dm_config.vkbs[0]); + ret = libxl_device_vkb_add(ctx, dm_domid, &dm_config.vkbs[0]); if (ret) goto out_free; @@ -818,14 +827,14 @@ retry_transaction: char *name; case STUBDOM_CONSOLE_LOGGING: name = libxl__sprintf(gc, "qemu-dm-%s", - libxl_domid_to_name(ctx, info->domid)); + libxl_domid_to_name(ctx, guest_domid)); libxl_create_logfile(ctx, name, &filename); console[i].output = libxl__sprintf(gc, "file:%s", filename); free(filename); break; case STUBDOM_CONSOLE_SAVE: console[i].output = libxl__sprintf(gc, "file:%s", - libxl__device_model_savefile(gc, info->domid)); + libxl__device_model_savefile(gc, guest_domid)); break; case STUBDOM_CONSOLE_RESTORE: if (d_state->saved_state) @@ -836,17 +845,14 @@ retry_transaction: console[i].output = "pty"; break; } - ret = libxl__device_console_add(gc, domid, &console[i], + ret = libxl__device_console_add(gc, dm_domid, &console[i], i == STUBDOM_CONSOLE_LOGGING ? &stubdom_state : NULL); if (ret) goto out_free; } - memset((void*)&xenpv_dm_info, 0, sizeof(libxl_device_model_info)); - - if (libxl__create_xenpv_qemu(gc, domid, + if (libxl__create_xenpv_qemu(gc, dm_domid, &dm_config, - &xenpv_dm_info, &stubdom_state, &dm_starting) < 0) { ret = ERROR_FAIL; @@ -857,12 +863,12 @@ retry_transaction: goto out_free; } - libxl_domain_unpause(ctx, domid); + libxl_domain_unpause(ctx, dm_domid); if (starting_r) { *starting_r = calloc(1, sizeof(libxl__spawner_starting)); - (*starting_r)->domid = info->domid; - (*starting_r)->dom_path = libxl__xs_get_dompath(gc, info->domid); + (*starting_r)->domid = guest_domid; + (*starting_r)->dom_path = libxl__xs_get_dompath(gc, guest_domid); (*starting_r)->for_spawn = NULL; } @@ -875,15 +881,15 @@ out: } int libxl__create_device_model(libxl__gc *gc, + int domid, libxl_domain_config *guest_config, - libxl_device_model_info *info, libxl__domain_build_state *state, libxl__spawner_starting **starting_r) { libxl_ctx *ctx = libxl__gc_owner(gc); const libxl_domain_create_info *c_info = &guest_config->c_info; const libxl_domain_build_info *b_info = &guest_config->b_info; - const libxl_vnc_info *vnc = dm_vnc(guest_config, info); + const libxl_vnc_info *vnc = dm_vnc(guest_config); char *path, *logfile; int logfile_w, null; int rc; @@ -895,7 +901,7 @@ int libxl__create_device_model(libxl__gc *gc, const char *dm; if (b_info->device_model_stubdomain) { - rc = libxl__create_stubdom(gc, guest_config, info, state, starting_r); + rc = libxl__create_stubdom(gc, domid, guest_config, state, starting_r); goto out; } @@ -910,18 +916,18 @@ int libxl__create_device_model(libxl__gc *gc, rc = ERROR_FAIL; goto out; } - args = libxl__build_device_model_args(gc, dm, guest_config, info, state); + args = libxl__build_device_model_args(gc, dm, domid, guest_config, state); if (!args) { rc = ERROR_FAIL; goto out; } - path = xs_get_domain_path(ctx->xsh, info->domid); + path = xs_get_domain_path(ctx->xsh, domid); libxl__xs_write(gc, XBT_NULL, libxl__sprintf(gc, "%s/hvmloader/bios", path), "%s", libxl__domain_bios(gc, b_info)); free(path); - path = libxl__sprintf(gc, "/local/domain/0/device-model/%d", info->domid); + path = libxl__sprintf(gc, "/local/domain/0/device-model/%d", domid); xs_mkdir(ctx->xsh, XBT_NULL, path); libxl__xs_write(gc, XBT_NULL, libxl__sprintf(gc, "%s/disable_pf", path), "%d", !b_info->u.hvm.xen_platform_pci); @@ -945,8 +951,8 @@ int libxl__create_device_model(libxl__gc *gc, p->for_spawn = NULL; } - p->domid = info->domid; - p->dom_path = libxl__xs_get_dompath(gc, info->domid); + p->domid = domid; + p->dom_path = libxl__xs_get_dompath(gc, domid); p->pid_path = "image/device-model-pid"; if (!p->dom_path) { rc = ERROR_FAIL; @@ -1068,14 +1074,6 @@ out: return ret; } -static int libxl__build_xenpv_qemu_args(libxl__gc *gc, - uint32_t domid, - libxl_device_model_info *info) -{ - info->domid = domid; - return 0; -} - int libxl__need_xenpv_qemu(libxl__gc *gc, int nr_consoles, libxl_device_console *consoles, int nr_vfbs, libxl_device_vfb *vfbs, @@ -1115,12 +1113,10 @@ out: int libxl__create_xenpv_qemu(libxl__gc *gc, uint32_t domid, libxl_domain_config *guest_config, - libxl_device_model_info *info, libxl__domain_build_state *state, libxl__spawner_starting **starting_r) { - libxl__build_xenpv_qemu_args(gc, domid, info); - libxl__create_device_model(gc, guest_config, info, state, starting_r); + libxl__create_device_model(gc, domid, guest_config, state, starting_r); return 0; } diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index c88ecd743a..9785cfcbf8 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -291,8 +291,7 @@ static int hvm_build_set_params(xc_interface *handle, uint32_t domid, } static const char *libxl__domain_firmware(libxl__gc *gc, - libxl_domain_build_info *info, - libxl_device_model_info *dm_info) + libxl_domain_build_info *info) { libxl_ctx *ctx = libxl__gc_owner(gc); const char *firmware; @@ -320,12 +319,11 @@ static const char *libxl__domain_firmware(libxl__gc *gc, int libxl__build_hvm(libxl__gc *gc, uint32_t domid, libxl_domain_build_info *info, - libxl_device_model_info *dm_info, libxl__domain_build_state *state) { libxl_ctx *ctx = libxl__gc_owner(gc); int ret, rc = ERROR_FAIL; - const char *firmware = libxl__domain_firmware(gc, info, dm_info); + const char *firmware = libxl__domain_firmware(gc, info); if (!firmware) goto out; diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 4a3125a06f..832cf35a9e 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -615,7 +615,6 @@ _hidden int libxl__build_pv(libxl__gc *gc, uint32_t domid, libxl_domain_build_info *info, libxl__domain_build_state *state); _hidden int libxl__build_hvm(libxl__gc *gc, uint32_t domid, libxl_domain_build_info *info, - libxl_device_model_info *dm_info, libxl__domain_build_state *state); _hidden int libxl__domain_rename(libxl__gc *gc, uint32_t domid, @@ -858,10 +857,11 @@ _hidden void libxl__exec(int stdinfd, int stdoutfd, int stderrfd, const char *arg0, char **args); // logs errors, never returns /* from xl_create */ -_hidden int libxl__domain_make(libxl__gc *gc, libxl_domain_create_info *info, uint32_t *domid); +_hidden int libxl__domain_make(libxl__gc *gc, + libxl_domain_create_info *info, + uint32_t *domid); _hidden int libxl__domain_build(libxl__gc *gc, libxl_domain_build_info *info, - libxl_device_model_info *dm_info, uint32_t domid, libxl__domain_build_state *state); @@ -869,13 +869,12 @@ _hidden int libxl__domain_build(libxl__gc *gc, _hidden const char *libxl__domain_device_model(libxl__gc *gc, const libxl_domain_build_info *info); _hidden int libxl__create_device_model(libxl__gc *gc, + int domid, libxl_domain_config *guest_config, - libxl_device_model_info *info, libxl__domain_build_state *state, libxl__spawner_starting **starting_r); _hidden int libxl__create_xenpv_qemu(libxl__gc *gc, uint32_t domid, libxl_domain_config *guest_config, - libxl_device_model_info *dm_info, libxl__domain_build_state *state, libxl__spawner_starting **starting_r); _hidden int libxl__need_xenpv_qemu(libxl__gc *gc, diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index 0344d1668d..c859c3db1c 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -262,12 +262,6 @@ libxl_domain_build_info = Struct("domain_build_info",[ ], ) -# Device Model Information -libxl_device_model_info = Struct("device_model_info",[ - ("domid", libxl_domid), - ], -) - libxl_device_vfb = Struct("device_vfb", [ ("backend_domid", libxl_domid), ("devid", integer), diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 5989c9b913..5260abc073 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -290,8 +290,7 @@ static void dolog(const char *file, int line, const char *func, char *fmt, ...) } static void printf_info(int domid, - libxl_domain_config *d_config, - libxl_device_model_info *dm_info) + libxl_domain_config *d_config) { int i; libxl_dominfo info; @@ -631,8 +630,7 @@ vcpp_out: static void parse_config_data(const char *configfile_filename_report, const char *configfile_data, int configfile_len, - libxl_domain_config *d_config, - libxl_device_model_info *dm_info) + libxl_domain_config *d_config) { const char *buf; long l; @@ -1194,9 +1192,6 @@ skip_vfb: break; } - /* init dm from c and b */ - if (libxl_init_dm_info(ctx, dm_info, c_info, b_info)) - exit(1); /* parse device model arguments, this works for pv, hvm and stubdom */ if (!xlu_cfg_get_string (config, "device_model", &buf, 0)) { fprintf(stderr, @@ -1452,7 +1447,7 @@ struct domain_create { int no_incr_generationid; }; -static int freemem(libxl_domain_build_info *b_info, libxl_device_model_info *dm_info) +static int freemem(libxl_domain_build_info *b_info) { int rc, retries = 3; uint32_t need_memkb, free_memkb; @@ -1460,7 +1455,7 @@ static int freemem(libxl_domain_build_info *b_info, libxl_device_model_info *dm_ if (!autoballoon) return 0; - rc = libxl_domain_need_memory(ctx, b_info, dm_info, &need_memkb); + rc = libxl_domain_need_memory(ctx, b_info, &need_memkb); if (rc < 0) return rc; @@ -1679,7 +1674,7 @@ static int create_domain(struct domain_create *dom_info) if (!dom_info->quiet) printf("Parsing config file %s\n", config_file); - parse_config_data(config_file, config_data, config_len, &d_config, &d_config.dm_info); + parse_config_data(config_file, config_data, config_len, &d_config); if (migrate_fd >= 0) { if (d_config.c_info.name) { @@ -1704,7 +1699,7 @@ static int create_domain(struct domain_create *dom_info) dom_info->no_incr_generationid; if (debug || dom_info->dryrun) - printf_info(-1, &d_config, &d_config.dm_info); + printf_info(-1, &d_config); ret = 0; if (dom_info->dryrun) @@ -1717,7 +1712,7 @@ start: if (rc < 0) goto error_out; - ret = freemem(&d_config.b_info, &d_config.dm_info); + ret = freemem(&d_config.b_info); if (ret < 0) { fprintf(stderr, "failed to free memory for the domain\n"); ret = ERROR_FAIL; @@ -2484,7 +2479,6 @@ static void list_domains_details(const libxl_dominfo *info, int nb_domain) char *config_file; uint8_t *data; int i, len, rc; - libxl_device_model_info dm_info; for (i = 0; i < nb_domain; i++) { /* no detailed info available on dom0 */ @@ -2495,8 +2489,8 @@ static void list_domains_details(const libxl_dominfo *info, int nb_domain) continue; CHK_ERRNO(asprintf(&config_file, "<domid %d data>", info[i].domid)); memset(&d_config, 0x00, sizeof(d_config)); - parse_config_data(config_file, (char *)data, len, &d_config, &dm_info); - printf_info(info[i].domid, &d_config, &dm_info); + parse_config_data(config_file, (char *)data, len, &d_config); + printf_info(info[i].domid, &d_config); libxl_domain_config_dispose(&d_config); free(data); free(config_file); |