From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vincent Hanquez Subject: [PATCH 2/3] let the user of libxenlight choose explicitely if it want to start a stubdom or not. Date: Wed, 7 Jul 2010 14:00:55 +0100 Message-ID: <1278507656-7745-3-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 the same mechanism of choosing stubdomain or not, depending on the qemu-d= m filename that was embedded in the libxenlight is moved to xl so that noth= ing change. also expose more functions that the caller is expected to used no= w. Signed-off-by: Vincent Hanquez --- tools/libxl/libxl.c | 30 +++++++++++------------------- tools/libxl/libxl.h | 15 ++++++++++++++- tools/libxl/xl_cmdimpl.c | 12 ++++++++++-- 3 files changed, 35 insertions(+), 22 deletions(-) --------------1.7.1 Content-Type: text/x-patch; name="0002-let-the-user-of-libxenlight-choose-explicitely-if-it.patch" Content-Disposition: attachment; filename="0002-let-the-user-of-libxenlight-choose-explicitely-if-it.patch" Content-Transfer-Encoding: quoted-printable diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index bf2c7e8..811678f 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -949,10 +949,10 @@ void dm_xenstore_record_pid(void *for_spawn, pid_t = innerchild) xs_daemon_close(xsh); } =20 -static int libxl_vfb_and_vkb_from_device_model_info(struct libxl_ctx *ct= x, - libxl_device_model_i= nfo *info, - libxl_device_vfb *vf= b, - libxl_device_vkb *vk= b) +int libxl_vfb_and_vkb_from_device_model_info(struct libxl_ctx *ctx, + libxl_device_model_info *in= fo, + libxl_device_vfb *vfb, + libxl_device_vkb *vkb) { memset(vfb, 0x00, sizeof(libxl_device_vfb)); memset(vkb, 0x00, sizeof(libxl_device_vkb)); @@ -1055,13 +1055,13 @@ int libxl_stubdom_make(struct libxl_ctx *ctx, lib= xl_stubdom_create_info *info, return 0; } =20 -static int libxl_create_stubdom(struct libxl_ctx *ctx, - libxl_device_model_info *info, - libxl_device_disk *disks, int num_disks, - libxl_device_nic *vifs, int num_vifs, - libxl_device_vfb *vfb, - libxl_device_vkb *vkb, - libxl_device_model_starting **starting_r= ) +int libxl_stubdom_create(struct libxl_ctx *ctx, + libxl_device_model_info *info, + libxl_device_disk *disks, int num_disks, + libxl_device_nic *vifs, int num_vifs, + libxl_device_vfb *vfb, + libxl_device_vkb *vkb, + libxl_device_model_starting **starting_r) { int i, num_console =3D 1, ret; libxl_device_console *console; @@ -1178,14 +1178,6 @@ int libxl_create_device_model(struct libxl_ctx *ct= x, char *vm_path; char **pass_stuff; =20 - if (strstr(info->device_model, "stubdom-dm")) { - libxl_device_vfb vfb; - libxl_device_vkb vkb; - - libxl_vfb_and_vkb_from_device_model_info(ctx, info, &vfb, &vkb); - return libxl_create_stubdom(ctx, info, disks, num_disks, vifs, n= um_vifs, &vfb, &vkb, starting_r); - } - args =3D libxl_build_device_model_args(ctx, info, vifs, num_vifs); if (!args) return ERROR_FAIL; diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index a0a3a1a..76f9b5c 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -336,6 +336,7 @@ typedef struct { char *token; } libxl_waiter; =20 +typedef struct libxl_device_model_starting libxl_device_model_starting; =20 int libxl_get_wait_fd(struct libxl_ctx *ctx, int *fd); /* waiter is allocated by the caller */ @@ -374,7 +375,19 @@ struct libxl_vminfo * libxl_list_vm(struct libxl_ctx= *ctx, int *nb_vm); int libxl_stubdom_make(struct libxl_ctx *ctx, libxl_stubdom_create_info = *info, libxl_domain_build_state *state, uint32_t *domid)= ; =20 -typedef struct libxl_device_model_starting libxl_device_model_starting; +int libxl_stubdom_create(struct libxl_ctx *ctx, + libxl_device_model_info *info, + libxl_device_disk *disks, int num_disks, + libxl_device_nic *vifs, int num_vifs, + libxl_device_vfb *vfb, + libxl_device_vkb *vkb, + libxl_device_model_starting **starting_r); + +int libxl_vfb_and_vkb_from_device_model_info(struct libxl_ctx *ctx, + libxl_device_model_info *in= fo, + libxl_device_vfb *vfb, + libxl_device_vkb *vkb); + int libxl_create_device_model(struct libxl_ctx *ctx, libxl_device_model_info *info, libxl_device_disk *disk, int num_disks, diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 208ecd6..a20e77a 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -1151,8 +1151,16 @@ start: } if (info1.hvm) { dm_info.domid =3D domid; - MUST( libxl_create_device_model(&ctx, &dm_info, disks, num_disks= , - vifs, num_vifs, &dm_starting) ); + if (strstr(dm_info.device_model, "stubdom-dm")) { + libxl_device_vfb vfb; + libxl_device_vkb vkb; + + libxl_vfb_and_vkb_from_device_model_info(&ctx, &dm_info, &vf= b, &vkb); + MUST( libxl_stubdom_create(&ctx, &dm_info, disks, num_disks,= vifs, num_vifs, &vfb, &vkb, &dm_starting) ); + } else { + MUST( libxl_create_device_model(&ctx, &dm_info, disks, num_d= isks, + vifs, num_vifs, &dm_starting= ) ); + } } else { for (i =3D 0; i < num_vfbs; i++) { vfbs[i].domid =3D domid; --------------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--