[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] libxl: convert VFB handling to device API
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1318941403 -3600 # Node ID 7919aa4b483541ec4a2dc4ed98ab6f82f2d2d494 # Parent 175b7e156bcb64aa22f7461659a2f9058687799e libxl: convert VFB handling to device API Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com> --- diff -r 175b7e156bcb -r 7919aa4b4835 tools/libxl/libxl.c --- a/tools/libxl/libxl.c Tue Oct 18 13:36:43 2011 +0100 +++ b/tools/libxl/libxl.c Tue Oct 18 13:36:43 2011 +0100 @@ -1896,10 +1896,9 @@ } /******************************************************************************/ -void libxl_device_vfb_init(libxl_device_vfb *vfb, int dev_num) +int libxl_device_vfb_init(libxl_ctx *ctx, libxl_device_vfb *vfb) { memset(vfb, 0x00, sizeof(libxl_device_vfb)); - vfb->devid = dev_num; vfb->display = NULL; vfb->xauthority = NULL; vfb->vnc = 1; @@ -1910,6 +1909,20 @@ vfb->keymap = NULL; vfb->sdl = 0; vfb->opengl = 0; + return 0; +} + +static int libxl__device_from_vfb(libxl__gc *gc, uint32_t domid, + libxl_device_vfb *vfb, + libxl__device *device) +{ + device->backend_devid = vfb->devid; + device->backend_domid = vfb->backend_domid; + device->backend_kind = LIBXL__DEVICE_KIND_VFB; + device->devid = vfb->devid; + device->domid = domid; + device->kind = LIBXL__DEVICE_KIND_VFB; + return 0; } int libxl_device_vfb_add(libxl_ctx *ctx, uint32_t domid, libxl_device_vfb *vfb) @@ -1931,12 +1944,8 @@ goto out_free; } - device.backend_devid = vfb->devid; - device.backend_domid = vfb->backend_domid; - device.backend_kind = LIBXL__DEVICE_KIND_VFB; - device.devid = vfb->devid; - device.domid = domid; - device.kind = LIBXL__DEVICE_KIND_VFB; + rc = libxl__device_from_vfb(&gc, domid, vfb, &device); + if (rc != 0) goto out_free; flexarray_append_pair(back, "frontend-id", libxl__sprintf(&gc, "%d", domid)); flexarray_append_pair(back, "online", "1"); @@ -1971,6 +1980,38 @@ return rc; } +int libxl_device_vfb_remove(libxl_ctx *ctx, uint32_t domid, + libxl_device_vfb *vfb) +{ + libxl__gc gc = LIBXL_INIT_GC(ctx); + libxl__device device; + int rc; + + rc = libxl__device_from_vfb(&gc, domid, vfb, &device); + if (rc != 0) goto out; + + rc = libxl__device_remove(&gc, &device, 1); +out: + libxl__free_all(&gc); + return rc; +} + +int libxl_device_vfb_destroy(libxl_ctx *ctx, uint32_t domid, + libxl_device_vfb *vfb) +{ + libxl__gc gc = LIBXL_INIT_GC(ctx); + libxl__device device; + int rc; + + rc = libxl__device_from_vfb(&gc, domid, vfb, &device); + if (rc != 0) goto out; + + rc = libxl__device_destroy(&gc, &device); +out: + libxl__free_all(&gc); + return rc; +} + /******************************************************************************/ int libxl_domain_setmaxmem(libxl_ctx *ctx, uint32_t domid, uint32_t max_memkb) diff -r 175b7e156bcb -r 7919aa4b4835 tools/libxl/libxl.h --- a/tools/libxl/libxl.h Tue Oct 18 13:36:43 2011 +0100 +++ b/tools/libxl/libxl.h Tue Oct 18 13:36:43 2011 +0100 @@ -479,10 +479,11 @@ int libxl_device_vkb_remove(libxl_ctx *ctx, uint32_t domid, libxl_device_vkb *vkb); int libxl_device_vkb_destroy(libxl_ctx *ctx, uint32_t domid, libxl_device_vkb *vkb); -void libxl_device_vfb_init(libxl_device_vfb *vfb, int dev_num); +/* Framebuffer */ +int libxl_device_vfb_init(libxl_ctx *ctx, libxl_device_vfb *vfb); int libxl_device_vfb_add(libxl_ctx *ctx, uint32_t domid, libxl_device_vfb *vfb); -int libxl_device_vfb_clean_shutdown(libxl_ctx *ctx, uint32_t domid); -int libxl_device_vfb_hard_shutdown(libxl_ctx *ctx, uint32_t domid); +int libxl_device_vfb_remove(libxl_ctx *ctx, uint32_t domid, libxl_device_vfb *vfb); +int libxl_device_vfb_destroy(libxl_ctx *ctx, uint32_t domid, libxl_device_vfb *vfb); int libxl_device_pci_add(libxl_ctx *ctx, uint32_t domid, libxl_device_pci *pcidev); int libxl_device_pci_remove(libxl_ctx *ctx, uint32_t domid, libxl_device_pci *pcidev, int force); diff -r 175b7e156bcb -r 7919aa4b4835 tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Tue Oct 18 13:36:43 2011 +0100 +++ b/tools/libxl/xl_cmdimpl.c Tue Oct 18 13:36:43 2011 +0100 @@ -853,7 +853,8 @@ d_config->vfbs = (libxl_device_vfb *) realloc(d_config->vfbs, sizeof(libxl_device_vfb) * (d_config->num_vfbs + 1)); vfb = d_config->vfbs + d_config->num_vfbs; - libxl_device_vfb_init(vfb, d_config->num_vfbs); + libxl_device_vfb_init(ctx, vfb); + vfb->devid = d_config->num_vfbs; d_config->vkbs = (libxl_device_vkb *) realloc(d_config->vkbs, sizeof(libxl_device_vkb) * (d_config->num_vkbs + 1)); vkb = d_config->vkbs + d_config->num_vkbs; diff -r 175b7e156bcb -r 7919aa4b4835 tools/ocaml/libs/xl/genwrap.py --- a/tools/ocaml/libs/xl/genwrap.py Tue Oct 18 13:36:43 2011 +0100 +++ b/tools/ocaml/libs/xl/genwrap.py Tue Oct 18 13:36:43 2011 +0100 @@ -22,10 +22,7 @@ ] functions = { # ( name , [type1,type2,....] ) - "device_vfb": [ ("add", ["t", "domid", "unit"]), - ("clean_shutdown", ["domid", "unit"]), - ("hard_shutdown", ["domid", "unit"]), - ], + "device_vfb": DEVICE_FUNCTIONS, "device_vkb": DEVICE_FUNCTIONS, "device_disk": DEVICE_FUNCTIONS, "device_nic": DEVICE_FUNCTIONS, diff -r 175b7e156bcb -r 7919aa4b4835 tools/ocaml/libs/xl/xenlight_stubs.c --- a/tools/ocaml/libs/xl/xenlight_stubs.c Tue Oct 18 13:36:43 2011 +0100 +++ b/tools/ocaml/libs/xl/xenlight_stubs.c Tue Oct 18 13:36:43 2011 +0100 @@ -360,14 +360,17 @@ CAMLreturn(Val_unit); } -value stub_xl_device_vfb_clean_shutdown(value domid) +value stub_xl_device_vfb_remove(value info, value domid) { CAMLparam1(domid); + libxl_device_vfb c_info; int ret; INIT_STRUCT(); + device_vfb_val(&gc, &lg, &c_info, info); + INIT_CTX(); - ret = libxl_device_vfb_clean_shutdown(ctx, Int_val(domid)); + ret = libxl_device_vfb_remove(ctx, Int_val(domid), &c_info); if (ret != 0) failwith_xl("vfb_clean_shutdown", &lg); FREE_CTX(); @@ -375,14 +378,17 @@ CAMLreturn(Val_unit); } -value stub_xl_device_vfb_hard_shutdown(value domid) +value stub_xl_device_vfb_destroy(value info, value domid) { CAMLparam1(domid); + libxl_device_vfb c_info; int ret; INIT_STRUCT(); + device_vfb_val(&gc, &lg, &c_info, info); + INIT_CTX(); - ret = libxl_device_vfb_hard_shutdown(ctx, Int_val(domid)); + ret = libxl_device_vfb_destroy(ctx, Int_val(domid), &c_info); if (ret != 0) failwith_xl("vfb_hard_shutdown", &lg); FREE_CTX(); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |