From: Ian Campbell Date: Wed, 20 Apr 2011 16:13:07 +0000 (+0100) Subject: tools: libxl: remove libxl_domain_build_state from the IDL X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~10422 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=59f8f46a491c9bdc1ad3e0c5ae4f8b48068d13cd;p=xen.git tools: libxl: remove libxl_domain_build_state from the IDL This datastructure is internal to the library. Remove the reference from libxl_device_console. This could never have been used from outside libxl and is only used internally to add the primary PV console to a guest. Make an internal variant of libxl_device_console_add which takes the build state as a parameter instead. Signed-off-by: Ian Campbell Acked-by: Ian Jackson Committed-by: Ian Jackson --- diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 0146a966e2..ccf6518a89 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -1389,14 +1389,20 @@ err: } /******************************************************************************/ -int libxl_device_console_add(libxl_ctx *ctx, uint32_t domid, libxl_device_console *console) +int libxl__device_console_add(libxl__gc *gc, uint32_t domid, + libxl_device_console *console, + libxl__domain_build_state *state) { - libxl__gc gc = LIBXL_INIT_GC(ctx); flexarray_t *front; flexarray_t *back; libxl__device device; int rc; + if (console->devid && state) { + rc = ERROR_INVAL; + goto out; + } + front = flexarray_make(16, 1); if (!front) { rc = ERROR_NOMEM; @@ -1416,20 +1422,20 @@ int libxl_device_console_add(libxl_ctx *ctx, uint32_t domid, libxl_device_consol device.kind = DEVICE_CONSOLE; flexarray_append(back, "frontend-id"); - flexarray_append(back, libxl__sprintf(&gc, "%d", domid)); + flexarray_append(back, libxl__sprintf(gc, "%d", domid)); flexarray_append(back, "online"); flexarray_append(back, "1"); flexarray_append(back, "state"); - flexarray_append(back, libxl__sprintf(&gc, "%d", 1)); + flexarray_append(back, libxl__sprintf(gc, "%d", 1)); flexarray_append(back, "domain"); - flexarray_append(back, libxl__domid_to_name(&gc, domid)); + flexarray_append(back, libxl__domid_to_name(gc, domid)); flexarray_append(back, "protocol"); flexarray_append(back, LIBXL_XENCONSOLE_PROTOCOL); flexarray_append(front, "backend-id"); - flexarray_append(front, libxl__sprintf(&gc, "%d", console->backend_domid)); + flexarray_append(front, libxl__sprintf(gc, "%d", console->backend_domid)); flexarray_append(front, "limit"); - flexarray_append(front, libxl__sprintf(&gc, "%d", LIBXL_XENCONSOLE_LIMIT)); + flexarray_append(front, libxl__sprintf(gc, "%d", LIBXL_XENCONSOLE_LIMIT)); flexarray_append(front, "type"); if (console->consback == LIBXL_CONSOLE_BACKEND_XENCONSOLED) flexarray_append(front, "xenconsoled"); @@ -1438,30 +1444,37 @@ int libxl_device_console_add(libxl_ctx *ctx, uint32_t domid, libxl_device_consol flexarray_append(front, "output"); flexarray_append(front, console->output); - if (device.devid == 0) { - if (console->build_state == NULL) { - rc = ERROR_INVAL; - goto out_free; - } + if (state) { flexarray_append(front, "port"); - flexarray_append(front, libxl__sprintf(&gc, "%"PRIu32, console->build_state->console_port)); + flexarray_append(front, libxl__sprintf(gc, "%"PRIu32, state->console_port)); flexarray_append(front, "ring-ref"); - flexarray_append(front, libxl__sprintf(&gc, "%lu", console->build_state->console_mfn)); + flexarray_append(front, libxl__sprintf(gc, "%lu", state->console_mfn)); } else { flexarray_append(front, "state"); - flexarray_append(front, libxl__sprintf(&gc, "%d", 1)); + flexarray_append(front, libxl__sprintf(gc, "%d", 1)); flexarray_append(front, "protocol"); flexarray_append(front, LIBXL_XENCONSOLE_PROTOCOL); } - libxl__device_generic_add(&gc, &device, - libxl__xs_kvs_of_flexarray(&gc, back, back->count), - libxl__xs_kvs_of_flexarray(&gc, front, front->count)); + libxl__device_generic_add(gc, &device, + libxl__xs_kvs_of_flexarray(gc, back, back->count), + libxl__xs_kvs_of_flexarray(gc, front, front->count)); rc = 0; out_free: flexarray_free(back); flexarray_free(front); out: + return rc; +} + +int libxl_device_console_add(libxl_ctx *ctx, uint32_t domid, + libxl_device_console *console) +{ + libxl__gc gc = LIBXL_INIT_GC(ctx); + int rc = ERROR_INVAL; + + rc = libxl__device_console_add(&gc, domid, console, NULL); + libxl__free_all(&gc); return rc; } diff --git a/tools/libxl/libxl.idl b/tools/libxl/libxl.idl index ac240a5089..17525a97ec 100644 --- a/tools/libxl/libxl.idl +++ b/tools/libxl/libxl.idl @@ -190,13 +190,6 @@ by libxl_domain_build/restore. If either of these are never called then the user is responsible for calling libxl_file_reference_unmap.""") -libxl_domain_build_state = Struct("domain_build_state",[ - ("store_port", uint32), - ("store_mfn", unsigned_long), - ("console_port", uint32), - ("console_mfn", unsigned_long), - ], destructor_fn=None) - libxl_device_model_info = Struct("device_model_info",[ ("domid", libxl_domid), ("uuid", libxl_uuid, False, "this is use only with stubdom, and must be different from the domain uuid"), @@ -259,7 +252,6 @@ libxl_device_console = Struct("device_console", [ ("backend_domid", libxl_domid), ("devid", integer), ("consback", libxl_console_backend), - ("build_state", Reference(libxl_domain_build_state), True), ("output", string), ]) diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 383980dd0a..2cd5910cce 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -133,7 +133,7 @@ void libxl_init_dm_info(libxl_device_model_info *dm_info, dm_info->xen_platform_pci = 1; } -static int init_console_info(libxl_device_console *console, int dev_num, libxl_domain_build_state *state) +static int init_console_info(libxl_device_console *console, int dev_num) { memset(console, 0x00, sizeof(libxl_device_console)); console->devid = dev_num; @@ -141,12 +141,11 @@ static int init_console_info(libxl_device_console *console, int dev_num, libxl_d console->output = strdup("pty"); if ( NULL == console->output ) return ERROR_NOMEM; - if (state) - console->build_state = state; return 0; } -int libxl__domain_build(libxl__gc *gc, libxl_domain_build_info *info, uint32_t domid, libxl_domain_build_state *state) +int libxl__domain_build(libxl__gc *gc, libxl_domain_build_info *info, + uint32_t domid, libxl__domain_build_state *state) { char **vments = NULL, **localents = NULL; struct timeval start_time; @@ -198,7 +197,8 @@ out: } static int domain_restore(libxl__gc *gc, libxl_domain_build_info *info, - uint32_t domid, int fd, libxl_domain_build_state *state, + uint32_t domid, int fd, + libxl__domain_build_state *state, libxl_device_model_info *dm_info) { libxl_ctx *ctx = libxl__gc_owner(gc); @@ -403,7 +403,7 @@ static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config, libxl_ctx *ctx = libxl__gc_owner(gc); libxl__device_model_starting *dm_starting = 0; libxl_device_model_info *dm_info = &d_config->dm_info; - libxl_domain_build_state state; + libxl__domain_build_state state; uint32_t domid; int i, ret; @@ -464,10 +464,10 @@ static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config, if (d_config->c_info.hvm) { libxl_device_console console; - ret = init_console_info(&console, 0, &state); + ret = init_console_info(&console, 0); if ( ret ) goto error_out; - libxl_device_console_add(ctx, domid, &console); + libxl__device_console_add(gc, domid, &console, &state); libxl_device_console_destroy(&console); dm_info->domid = domid; @@ -489,7 +489,7 @@ static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config, libxl_device_vkb_add(ctx, domid, &d_config->vkbs[i]); } - ret = init_console_info(&console, 0, &state); + ret = init_console_info(&console, 0); if ( ret ) goto error_out; @@ -500,7 +500,7 @@ static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config, if (need_qemu) console.consback = LIBXL_CONSOLE_BACKEND_IOEMU; - libxl_device_console_add(ctx, domid, &console); + libxl__device_console_add(gc, domid, &console, &state); libxl_device_console_destroy(&console); if (need_qemu) diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index a9ec001107..76479fe96e 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -569,7 +569,7 @@ static int libxl__create_stubdom(libxl__gc *gc, libxl_device_console *console; libxl_domain_create_info c_info; libxl_domain_build_info b_info; - libxl_domain_build_state state; + libxl__domain_build_state state; uint32_t domid; char **args; struct xs_permissions perm[2]; @@ -684,7 +684,6 @@ retry_transaction: name = libxl__sprintf(gc, "qemu-dm-%s", libxl_domid_to_name(ctx, info->domid)); libxl_create_logfile(ctx, name, &filename); console[i].output = libxl__sprintf(gc, "file:%s", filename); - console[i].build_state = &state; free(filename); break; case STUBDOM_CONSOLE_SAVE: @@ -698,7 +697,8 @@ retry_transaction: console[i].output = "pty"; break; } - ret = libxl_device_console_add(ctx, domid, &console[i]); + ret = libxl__device_console_add(gc, domid, &console[i], + i == STUBDOM_CONSOLE_LOGGING ? &state : NULL); if (ret) goto out_free; } diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index 5a8eecdc6e..667b20b0eb 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -67,7 +67,7 @@ int libxl__domain_shutdown_reason(libxl__gc *gc, uint32_t domid) } int libxl__build_pre(libxl__gc *gc, uint32_t domid, - libxl_domain_build_info *info, libxl_domain_build_state *state) + libxl_domain_build_info *info, libxl__domain_build_state *state) { libxl_ctx *ctx = libxl__gc_owner(gc); xc_domain_max_vcpus(ctx->xch, domid, info->max_vcpus); @@ -91,8 +91,9 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid, } int libxl__build_post(libxl__gc *gc, uint32_t domid, - libxl_domain_build_info *info, libxl_domain_build_state *state, - char **vms_ents, char **local_ents) + libxl_domain_build_info *info, + libxl__domain_build_state *state, + char **vms_ents, char **local_ents) { libxl_ctx *ctx = libxl__gc_owner(gc); char *dom_path, *vm_path; @@ -145,7 +146,7 @@ retry_transaction: } int libxl__build_pv(libxl__gc *gc, uint32_t domid, - libxl_domain_build_info *info, libxl_domain_build_state *state) + libxl_domain_build_info *info, libxl__domain_build_state *state) { libxl_ctx *ctx = libxl__gc_owner(gc); struct xc_dom_image *dom; @@ -277,7 +278,7 @@ static const char *libxl__domain_hvmloader(libxl__gc *gc, } int libxl__build_hvm(libxl__gc *gc, uint32_t domid, - libxl_domain_build_info *info, libxl_domain_build_state *state) + libxl_domain_build_info *info, libxl__domain_build_state *state) { libxl_ctx *ctx = libxl__gc_owner(gc); int ret, rc = ERROR_INVAL; @@ -305,8 +306,9 @@ out: } int libxl__domain_restore_common(libxl__gc *gc, uint32_t domid, - libxl_domain_build_info *info, libxl_domain_build_state *state, - int fd) + libxl_domain_build_info *info, + libxl__domain_build_state *state, + int fd) { libxl_ctx *ctx = libxl__gc_owner(gc); /* read signature */ diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 6f109c1bdb..64e1d56459 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -169,23 +169,33 @@ _hidden char **libxl__xs_directory(libxl__gc *gc, xs_transaction_t t, _hidden int libxl__domain_is_hvm(libxl__gc *gc, uint32_t domid); _hidden int libxl__domain_shutdown_reason(libxl__gc *gc, uint32_t domid); +typedef struct { + uint32_t store_port; + unsigned long store_mfn; + + uint32_t console_port; + unsigned long console_mfn; +} libxl__domain_build_state; + _hidden int libxl__build_pre(libxl__gc *gc, uint32_t domid, - libxl_domain_build_info *info, libxl_domain_build_state *state); + libxl_domain_build_info *info, libxl__domain_build_state *state); _hidden int libxl__build_post(libxl__gc *gc, uint32_t domid, - libxl_domain_build_info *info, libxl_domain_build_state *state, + libxl_domain_build_info *info, libxl__domain_build_state *state, char **vms_ents, char **local_ents); _hidden int libxl__build_pv(libxl__gc *gc, uint32_t domid, - libxl_domain_build_info *info, libxl_domain_build_state *state); + 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_domain_build_state *state); + libxl_domain_build_info *info, libxl__domain_build_state *state); _hidden int libxl__domain_rename(libxl__gc *gc, uint32_t domid, const char *old_name, const char *new_name, xs_transaction_t trans); _hidden int libxl__domain_restore_common(libxl__gc *gc, uint32_t domid, - libxl_domain_build_info *info, libxl_domain_build_state *state, int fd); + libxl_domain_build_info *info, + libxl__domain_build_state *state, + int fd); _hidden int libxl__domain_suspend_common(libxl__gc *gc, uint32_t domid, int fd, int hvm, int live, int debug); _hidden int libxl__domain_save_device_model(libxl__gc *gc, uint32_t domid, int fd); _hidden void libxl__userdata_destroyall(libxl__gc *gc, uint32_t domid); @@ -198,6 +208,10 @@ _hidden int libxl__device_physdisk_major_minor(const char *physpath, int *major, _hidden int libxl__device_disk_dev_number(char *virtpath, int *pdisk, int *ppartition); +_hidden int libxl__device_console_add(libxl__gc *gc, uint32_t domid, + libxl_device_console *console, + libxl__domain_build_state *state); + _hidden int libxl__device_generic_add(libxl__gc *gc, libxl__device *device, char **bents, char **fents); _hidden char *libxl__device_backend_path(libxl__gc *gc, libxl__device *device); @@ -230,7 +244,9 @@ typedef struct { /* from xl_create */ _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, uint32_t domid, /* out */ libxl_domain_build_state *state); +_hidden int libxl__domain_build(libxl__gc *gc, libxl_domain_build_info *info, + uint32_t domid, + libxl__domain_build_state *state); /* for device model creation */ _hidden const char *libxl__domain_device_model(libxl__gc *gc, diff --git a/tools/ocaml/libs/xl/xl.ml b/tools/ocaml/libs/xl/xl.ml index ff87a58a2d..4bd3f8b20c 100644 --- a/tools/ocaml/libs/xl/xl.ml +++ b/tools/ocaml/libs/xl/xl.ml @@ -70,16 +70,6 @@ module Domain_build_info = struct } end -module Domain_build_state = struct - type t = - { - store_port : int; - store_mfn : int64; - console_port : int; - console_mfn : int64; - } -end - type domid = int type disk_phystype = @@ -139,7 +129,7 @@ module Device_console = struct consoletype : console_type; } - external add : t -> Domain_build_state.t -> domid -> unit = "stub_xl_device_console_add" + external add : t -> domid -> unit = "stub_xl_device_console_add" end module Device_vkb = struct diff --git a/tools/ocaml/libs/xl/xl.mli b/tools/ocaml/libs/xl/xl.mli index 09f9b787dd..6dc1df8c20 100644 --- a/tools/ocaml/libs/xl/xl.mli +++ b/tools/ocaml/libs/xl/xl.mli @@ -70,16 +70,6 @@ module Domain_build_info : sig } end -module Domain_build_state : sig - type t = - { - store_port : int; - store_mfn : int64; - console_port : int; - console_mfn : int64; - } -end - type domid = int type disk_phystype = @@ -139,7 +129,7 @@ module Device_console : sig consoletype : console_type; } - external add : t -> Domain_build_state.t -> domid -> unit = "stub_xl_device_console_add" + external add : t -> domid -> unit = "stub_xl_device_console_add" end module Device_vkb : sig diff --git a/tools/ocaml/libs/xl/xl_stubs.c b/tools/ocaml/libs/xl/xl_stubs.c index 5758993c95..5488b32012 100644 --- a/tools/ocaml/libs/xl/xl_stubs.c +++ b/tools/ocaml/libs/xl/xl_stubs.c @@ -294,18 +294,6 @@ static int sched_credit_val(caml_gc *gc, libxl_sched_credit *c_val, value v) CAMLreturn(0); } -static int domain_build_state_val(caml_gc *gc, libxl_domain_build_state *c_val, value v) -{ - CAMLparam1(v); - - c_val->store_port = Int_val(Field(v, 0)); - c_val->store_mfn = Int64_val(Field(v, 1)); - c_val->console_port = Int_val(Field(v, 2)); - c_val->console_mfn = Int64_val(Field(v, 3)); - - CAMLreturn(0); -} - static value Val_sched_credit(libxl_sched_credit *c_val) { CAMLparam0(); @@ -436,17 +424,14 @@ value stub_xl_device_nic_del(value info, value domid) CAMLreturn(Val_unit); } -value stub_xl_device_console_add(value info, value state, value domid) +value stub_xl_device_console_add(value info, value domid) { - CAMLparam3(info, state, domid); + CAMLparam2(info, domid); libxl_device_console c_info; - libxl_domain_build_state c_state; int ret; INIT_STRUCT(); device_console_val(&gc, &c_info, info); - domain_build_state_val(&gc, &c_state, state); - c_info.build_state = &c_state; INIT_CTX(); ret = libxl_device_console_add(ctx, Int_val(domid), &c_info); diff --git a/tools/python/xen/lowlevel/xl/xl.c b/tools/python/xen/lowlevel/xl/xl.c index 9cea942f69..051b5eb476 100644 --- a/tools/python/xen/lowlevel/xl/xl.c +++ b/tools/python/xen/lowlevel/xl/xl.c @@ -232,12 +232,6 @@ int attrib__libxl_cpuarray_set(PyObject *v, libxl_cpuarray *pptr) return -1; } -int attrib__libxl_domain_build_state_ptr_set(PyObject *v, libxl_domain_build_state **pptr) -{ - PyErr_SetString(PyExc_NotImplementedError, "Setting domain_build_state_ptr"); - return -1; -} - int attrib__libxl_file_reference_set(PyObject *v, libxl_file_reference *pptr) { return genwrap__string_set(v, &pptr->path); @@ -329,12 +323,6 @@ PyObject *attrib__libxl_cpuarray_get(libxl_cpuarray *pptr) return list; } -PyObject *attrib__libxl_domain_build_state_ptr_get(libxl_domain_build_state **pptr) -{ - PyErr_SetString(PyExc_NotImplementedError, "Getting domain_build_state_ptr"); - return NULL; -} - PyObject *attrib__libxl_file_reference_get(libxl_file_reference *pptr) { return genwrap__string_get(&pptr->path);