From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vincent Hanquez Subject: [PATCH 1/3] move stubdom make into a proper function Date: Wed, 7 Jul 2010 14:00:54 +0100 Message-ID: <1278507656-7745-2-git-send-email-vincent.hanquez@eu.citrix.com> References: <1278507656-7745-1-git-send-email-vincent.hanquez@eu.citrix.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------1.7.1" Return-path: In-Reply-To: <1278507656-7745-1-git-send-email-vincent.hanquez@eu.citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Xen Devel Cc: Vincent Hanquez List-Id: xen-devel@lists.xenproject.org --------------1.7.1 Content-Type: text/plain; charset="UTF-8"; format=fixed Content-Transfer-Encoding: quoted-printable Signed-off-by: Vincent Hanquez --- tools/libxl/libxl.c | 72 ++++++++++++++++++++++++++++++++-------------= ----- tools/libxl/libxl.h | 10 +++++++ 2 files changed, 56 insertions(+), 26 deletions(-) --------------1.7.1 Content-Type: text/x-patch; name="0001-move-stubdom-make-into-a-proper-function.patch" Content-Disposition: attachment; filename="0001-move-stubdom-make-into-a-proper-function.patch" Content-Transfer-Encoding: quoted-printable diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 293aaa7..bf2c7e8 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -80,7 +80,7 @@ int libxl_ctx_free(struct libxl_ctx *ctx) /***********************************************************************= *******/ =20 int libxl_domain_make(struct libxl_ctx *ctx, libxl_domain_create_info *i= nfo, - uint32_t *domid) + uint32_t *domid) { int flags, ret, i, rc; char *uuid_string; @@ -1020,6 +1020,41 @@ retry_transaction: return 0; } =20 +int libxl_stubdom_make(struct libxl_ctx *ctx, libxl_stubdom_create_info = *info, + libxl_domain_build_state *state, uint32_t *domid) +{ + int ret, i; + libxl_domain_create_info c_info; + libxl_domain_build_info b_info; + + memset(&c_info, 0x00, sizeof(libxl_domain_create_info)); + c_info.hvm =3D 0; + c_info.name =3D libxl_sprintf(ctx, "%s-dm", libxl_domid_to_name(ctx,= info->target_domid)); + for (i =3D 0; i < 16; i++) + c_info.uuid[i] =3D info->uuid[i]; + + memset(&b_info, 0x00, sizeof(libxl_domain_build_info)); + b_info.max_vcpus =3D 1; + b_info.max_memkb =3D info->max_memkb; + b_info.target_memkb =3D b_info.max_memkb; + b_info.kernel =3D libxl_abs_path(ctx, "ioemu-stubdom.gz", libxl_xenf= irmwaredir_path()); + b_info.u.pv.cmdline =3D libxl_sprintf(ctx, " -d %d", info->target_do= mid); + b_info.u.pv.ramdisk =3D ""; + b_info.u.pv.features =3D ""; + b_info.hvm =3D 0; + + ret =3D libxl_domain_make(ctx, &c_info, domid); + if (ret) + return ret; + ret =3D libxl_domain_build(ctx, &b_info, *domid, state); + if (ret) + return ret; + + xc_domain_set_target(ctx->xch, *domid, info->target_domid); + xs_set_target(ctx->xsh, *domid, info->target_domid); + return 0; +} + static int libxl_create_stubdom(struct libxl_ctx *ctx, libxl_device_model_info *info, libxl_device_disk *disks, int num_disks, @@ -1030,40 +1065,27 @@ static int libxl_create_stubdom(struct libxl_ctx = *ctx, { int i, num_console =3D 1, ret; libxl_device_console *console; - libxl_domain_create_info c_info; - libxl_domain_build_info b_info; libxl_domain_build_state state; uint32_t domid; char **args; struct xs_permissions perm[2]; xs_transaction_t t; libxl_device_model_starting *dm_starting =3D 0; + libxl_stubdom_create_info stubinfo; + + /* initialize stubinfo create structure */ + stubinfo.target_domid =3D info->domid; + stubinfo.max_memkb =3D 32 * 1024; + for (i =3D 0; i < 16; i++) + stubinfo.uuid[i] =3D info->uuid[i]; + ret =3D libxl_stubdom_make(ctx, &stubinfo, &state, &domid); + if (ret) + return ret; =20 args =3D libxl_build_device_model_args(ctx, info, vifs, num_vifs); if (!args) return ERROR_FAIL; =20 - memset(&c_info, 0x00, sizeof(libxl_domain_create_info)); - c_info.hvm =3D 0; - c_info.name =3D libxl_sprintf(ctx, "%s-dm", libxl_domid_to_name(ctx,= info->domid)); - for (i =3D 0; i < 16; i++) - c_info.uuid[i] =3D info->uuid[i]; - - memset(&b_info, 0x00, sizeof(libxl_domain_build_info)); - b_info.max_vcpus =3D 1; - b_info.max_memkb =3D 32 * 1024; - b_info.target_memkb =3D b_info.max_memkb; - b_info.kernel =3D libxl_abs_path(ctx, "ioemu-stubdom.gz", libxl_xenf= irmwaredir_path()); - b_info.u.pv.cmdline =3D libxl_sprintf(ctx, " -d %d", info->domid); - b_info.u.pv.ramdisk =3D ""; - b_info.u.pv.features =3D ""; - b_info.hvm =3D 0; - - ret =3D libxl_domain_make(ctx, &c_info, &domid); - if (ret) return ret; - ret =3D libxl_domain_build(ctx, &b_info, domid, &state); - if (ret) return ret; - libxl_write_dmargs(ctx, domid, info->domid, args); libxl_xs_write(ctx, XBT_NULL, libxl_sprintf(ctx, "%s/image/device-model-domid", lib= xl_xs_get_dompath(ctx, info->domid)), @@ -1071,8 +1093,6 @@ static int libxl_create_stubdom(struct libxl_ctx *c= tx, libxl_xs_write(ctx, XBT_NULL, libxl_sprintf(ctx, "%s/target", libxl_xs_get_dompath(= ctx, domid)), "%d", info->domid); - xc_domain_set_target(ctx->xch, domid, info->domid); - xs_set_target(ctx->xsh, domid, info->domid); =20 perm[0].id =3D domid; perm[0].perms =3D XS_PERM_NONE; diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index 85f8196..a0a3a1a 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -121,6 +121,13 @@ typedef struct { } libxl_domain_build_info; =20 typedef struct { + uint8_t uuid[16]; + char *name; + uint32_t max_memkb; + uint32_t target_domid; +} libxl_stubdom_create_info; + +typedef struct { uint32_t store_port; unsigned long store_mfn; uint32_t console_port; @@ -364,6 +371,9 @@ struct libxl_dominfo * libxl_list_domain(struct libxl= _ctx*, int *nb_domain); struct libxl_poolinfo * libxl_list_pool(struct libxl_ctx*, int *nb_pool)= ; struct libxl_vminfo * libxl_list_vm(struct libxl_ctx *ctx, int *nb_vm); =20 +int libxl_stubdom_make(struct libxl_ctx *ctx, libxl_stubdom_create_info = *info, + libxl_domain_build_state *state, uint32_t *domid)= ; + typedef struct libxl_device_model_starting libxl_device_model_starting; int libxl_create_device_model(struct libxl_ctx *ctx, libxl_device_model_info *info, --------------1.7.1 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------1.7.1--