Mailing List Archive

[xen master] tools/ocaml/libs/xc: Backward compatible domid control at domain creation time
commit 4522321ced5ddbda5e74e20c52b0b88f96914fb5
Author: Edwin Török <edvin.torok@citrix.com>
AuthorDate: Fri Jan 8 11:57:37 2021 +0000
Commit: Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Fri Jan 22 18:01:34 2021 +0000

tools/ocaml/libs/xc: Backward compatible domid control at domain creation time

One can specify the domid to use when creating the domain, but this was
hardcoded to 0.

Keep the existing `domain_create` function, and make domid an optional
argument. When not specified, default to 0.

Controlling the domid can be useful during testing or migration.

Signed-off-by: Edwin Török <edvin.torok@citrix.com>
Acked-by: Christian Lindig <christian.lindig@citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
tools/ocaml/libs/xc/xenctrl.ml | 5 ++++-
tools/ocaml/libs/xc/xenctrl.mli | 4 ++--
tools/ocaml/libs/xc/xenctrl_stubs.c | 6 +++---
3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/tools/ocaml/libs/xc/xenctrl.ml b/tools/ocaml/libs/xc/xenctrl.ml
index e878699b0a..e0a47c4769 100644
--- a/tools/ocaml/libs/xc/xenctrl.ml
+++ b/tools/ocaml/libs/xc/xenctrl.ml
@@ -179,9 +179,12 @@ let with_intf f =
handle := Some h;
f h

-external domain_create: handle -> domctl_create_config -> domid
+external domain_create_stub: handle -> domid -> domctl_create_config -> domid
= "stub_xc_domain_create"

+let domain_create handle ?(domid=0) config =
+ domain_create_stub handle domid config
+
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..84311fa33d 100644
--- a/tools/ocaml/libs/xc/xenctrl.mli
+++ b/tools/ocaml/libs/xc/xenctrl.mli
@@ -143,8 +143,8 @@ val get_handle: unit -> handle option
* would invalidate the handle that with_intf passes to its argument. *)
val close_handle: unit -> unit

-external domain_create : handle -> domctl_create_config -> domid
- = "stub_xc_domain_create"
+val domain_create: handle -> ?domid:int -> domctl_create_config -> 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..9a8dbe5579 100644
--- a/tools/ocaml/libs/xc/xenctrl_stubs.c
+++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
@@ -175,9 +175,9 @@ 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(value xch, value wanted_domid, value config)
{
- CAMLparam2(xch, config);
+ CAMLparam3(xch, wanted_domid, config);
CAMLlocal2(l, arch_domconfig);

/* Mnemonics for the named fields inside domctl_create_config */
@@ -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(wanted_domid);
int result;
struct xen_domctl_createdomain cfg = {
.ssidref = Int32_val(VAL_SSIDREF),
--
generated by git-patchbot for /home/xen/git/xen.git#master