77 lines
2.8 KiB
Diff
77 lines
2.8 KiB
Diff
|
From bab7f84ade84ceaddb08b6948792d49b3d04b897 Mon Sep 17 00:00:00 2001
|
||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||
|
Date: Wed, 8 Nov 2017 16:52:58 +0000
|
||
|
Subject: [PATCH] Use -safe-string and fix the library.
|
||
|
|
||
|
Note this changes the type of the cpumap from string to bytes,
|
||
|
since (by the design of the API) it must be mutated.
|
||
|
---
|
||
|
libvirt/Makefile.in | 4 ++--
|
||
|
libvirt/libvirt.ml | 10 +++++-----
|
||
|
libvirt/libvirt.mli | 6 +++---
|
||
|
3 files changed, 10 insertions(+), 10 deletions(-)
|
||
|
|
||
|
diff --git a/libvirt/Makefile.in b/libvirt/Makefile.in
|
||
|
index cf614fc..1eb846b 100644
|
||
|
--- a/libvirt/Makefile.in
|
||
|
+++ b/libvirt/Makefile.in
|
||
|
@@ -31,11 +31,11 @@ OCAMLMKLIB = @OCAMLMKLIB@
|
||
|
|
||
|
ifneq ($(OCAMLFIND),)
|
||
|
OCAMLCPACKAGES := -package unix
|
||
|
-OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3
|
||
|
+OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3 -safe-string
|
||
|
OCAMLCLIBS := -linkpkg
|
||
|
else
|
||
|
OCAMLCINCS :=
|
||
|
-OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3
|
||
|
+OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3 -safe-string
|
||
|
OCAMLCLIBS := unix.cma
|
||
|
endif
|
||
|
|
||
|
diff --git a/libvirt/libvirt.ml b/libvirt/libvirt.ml
|
||
|
index d03a127..7e1e470 100644
|
||
|
--- a/libvirt/libvirt.ml
|
||
|
+++ b/libvirt/libvirt.ml
|
||
|
@@ -92,13 +92,13 @@ struct
|
||
|
|
||
|
(* See VIR_USE_CPU, VIR_UNUSE_CPU, VIR_CPU_USABLE macros defined in <libvirt.h>. *)
|
||
|
let use_cpu cpumap cpu =
|
||
|
- cpumap.[cpu/8] <-
|
||
|
- Char.chr (Char.code cpumap.[cpu/8] lor (1 lsl (cpu mod 8)))
|
||
|
+ Bytes.set cpumap (cpu/8)
|
||
|
+ (Char.chr (Char.code (Bytes.get cpumap (cpu/8)) lor (1 lsl (cpu mod 8))))
|
||
|
let unuse_cpu cpumap cpu =
|
||
|
- cpumap.[cpu/8] <-
|
||
|
- Char.chr (Char.code cpumap.[cpu/8] land (lnot (1 lsl (cpu mod 8))))
|
||
|
+ Bytes.set cpumap (cpu/8)
|
||
|
+ (Char.chr (Char.code (Bytes.get cpumap (cpu/8)) land (lnot (1 lsl (cpu mod 8)))))
|
||
|
let cpu_usable cpumaps maplen vcpu cpu =
|
||
|
- Char.code cpumaps.[vcpu*maplen + cpu/8] land (1 lsl (cpu mod 8)) <> 0
|
||
|
+ Char.code (Bytes.get cpumaps (vcpu*maplen + cpu/8)) land (1 lsl (cpu mod 8)) <> 0
|
||
|
|
||
|
external set_keep_alive : [>`R] t -> int -> int -> unit = "ocaml_libvirt_connect_set_keep_alive"
|
||
|
|
||
|
diff --git a/libvirt/libvirt.mli b/libvirt/libvirt.mli
|
||
|
index dc0033b..87f50f5 100644
|
||
|
--- a/libvirt/libvirt.mli
|
||
|
+++ b/libvirt/libvirt.mli
|
||
|
@@ -376,11 +376,11 @@ sig
|
||
|
CPU map between a single virtual and all physical CPUs of a domain.
|
||
|
*)
|
||
|
|
||
|
- val use_cpu : string -> int -> unit
|
||
|
+ val use_cpu : bytes -> int -> unit
|
||
|
(** [use_cpu cpumap cpu] marks [cpu] as usable in [cpumap]. *)
|
||
|
- val unuse_cpu : string -> int -> unit
|
||
|
+ val unuse_cpu : bytes -> int -> unit
|
||
|
(** [unuse_cpu cpumap cpu] marks [cpu] as not usable in [cpumap]. *)
|
||
|
- val cpu_usable : string -> int -> int -> int -> bool
|
||
|
+ val cpu_usable : bytes -> int -> int -> int -> bool
|
||
|
(** [cpu_usable cpumaps maplen vcpu cpu] checks returns true iff the
|
||
|
[cpu] is usable by [vcpu]. *)
|
||
|
|
||
|
--
|
||
|
2.13.1
|
||
|
|