|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1 4/4] tools/ocaml/libs/xc: backward compatible domid control at domain creation time
On 17/11/2020 18:24, Edwin Török wrote:
> One can specify the domid to use when creating the domain, but this was
> hardcoded to 0.
>
> Keep the existing `domain_create` function (and the type of its parameters)
> as is to make
> backwards compatibility easier.
> Introduce a new `domain_create_domid` OCaml API that allows specifying the
> domid.
> A new version of xenopsd can choose to start using this, while old versions
> of xenopsd will keep
> building and using the old API.
>
> Controlling the domid can be useful during testing or migration.
>
> Signed-off-by: Edwin Török <edvin.torok@xxxxxxxxxx>
> ---
> tools/ocaml/libs/xc/xenctrl.ml | 3 +++
> tools/ocaml/libs/xc/xenctrl.mli | 2 ++
> tools/ocaml/libs/xc/xenctrl_stubs.c | 9 +++++++--
> 3 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/tools/ocaml/libs/xc/xenctrl.ml b/tools/ocaml/libs/xc/xenctrl.ml
> index e878699b0a..9d720886e9 100644
> --- a/tools/ocaml/libs/xc/xenctrl.ml
> +++ b/tools/ocaml/libs/xc/xenctrl.ml
> @@ -182,6 +182,9 @@ let with_intf f =
> external domain_create: handle -> domctl_create_config -> domid
> = "stub_xc_domain_create"
>
> +external domain_create_domid: handle -> domctl_create_config -> domid ->
> domid
> + = "stub_xc_domain_create_domid"
Wouldn't this be better as handle -> domid -> domctl_create_config ->
domid ?
I'm not overwhelmed with the name, but
"domain_create_{specific,with}_domid" don't seem much better either.
> +
> external domain_sethandle: handle -> domid -> string -> unit
> = "stub_xc_domain_sethandle"
>
> diff --git a/tools/ocaml/libs/xc/xenctrl.mli b/tools/ocaml/libs/xc/xenctrl.mli
> index e64907df8e..e629022901 100644
> --- a/tools/ocaml/libs/xc/xenctrl.mli
> +++ b/tools/ocaml/libs/xc/xenctrl.mli
> @@ -145,6 +145,8 @@ val close_handle: unit -> unit
>
> external domain_create : handle -> domctl_create_config -> domid
> = "stub_xc_domain_create"
> +external domain_create_domid : handle -> domctl_create_config -> domid ->
> domid
> + = "stub_xc_domain_create_domid"
> external domain_sethandle : handle -> domid -> string -> unit =
> "stub_xc_domain_sethandle"
> external domain_max_vcpus : handle -> domid -> int -> unit
> = "stub_xc_domain_max_vcpus"
> diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c
> b/tools/ocaml/libs/xc/xenctrl_stubs.c
> index 94aba38a42..bb718fd164 100644
> --- a/tools/ocaml/libs/xc/xenctrl_stubs.c
> +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
> @@ -175,7 +175,7 @@ static unsigned int ocaml_list_to_c_bitmap(value l)
> return val;
> }
>
> -CAMLprim value stub_xc_domain_create(value xch, value config)
> +CAMLprim value stub_xc_domain_create_domid(value xch, value config, value
> want_domid)
> {
> CAMLparam2(xch, config);
> CAMLlocal2(l, arch_domconfig);
> @@ -191,7 +191,7 @@ CAMLprim value stub_xc_domain_create(value xch, value
> config)
> #define VAL_MAX_MAPTRACK_FRAMES Field(config, 7)
> #define VAL_ARCH Field(config, 8)
>
> - uint32_t domid = 0;
> + uint32_t domid = Int_val(want_domid);
wanted_domid would be a slightly better name, because it isn't ambiguous
with a boolean flag.
> int result;
> struct xen_domctl_createdomain cfg = {
> .ssidref = Int32_val(VAL_SSIDREF),
> @@ -262,6 +262,11 @@ CAMLprim value stub_xc_domain_create(value xch, value
> config)
> CAMLreturn(Val_int(domid));
> }
>
> +CAMLprim value stub_xc_domain_create(value xch, value config, value
> want_domid)
> +{
> + return stub_xc_domain_create_domid(xch, config, Val_int(0));
> +}
Using
https://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=36d94c17fa1e48cc9fb9ed15bc9a2237a1738bbb
as reverse inspiration, couldn't we do the insertion of 0 at the Ocaml
level and avoid doubling up the C stub?
~Andrew
> +
> CAMLprim value stub_xc_domain_max_vcpus(value xch, value domid,
> value max_vcpus)
> {
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |