This repository has been archived by the owner on Oct 18, 2020. It is now read-only.
Releases: mirage/mirage-platform
Releases · mirage/mirage-platform
split the `mirage-xen` package into 3
Add opam files and remove `page_stubs.c`
Add generic engine hooks and restore GC tracing support
Fix modern GCC and Xen compilation
Fix Xen compilation with gcc 4.8+
by disabling the stack protector and -fno-tree-loop-distribute-patterns
(not compatible with MiniOS). These missing flags were a regression from 2.1.3, which did include them.
Add support for OCaml 4.02+ in Xen
This releases adds support for OCaml 4.02+ compilation, and changes the Xen
backend build for Mirage significantly by:
- removing the OCaml compiler runtime from the mirage-platform, which makes
it simpler to work across multiple revisions of the compiler. It now uses
theocaml-src
OPAM package to grab the current switch's version of the
OCaml runtime. - split the Xen runtime build into discrete
pkg-config
libraries:mirage-xen-posix.pc
: in thexen-posix/
directory, is the nano-posix
layer built with no knowledge of OCamlmirage-xen-minios.pc
: defines the__INSIDE_MINIOS__
macro to expose
internal state via the MiniOS headers (for use only by libraries that
know exactly what they are doing with the MiniOS)mirage-xen-ocaml.pc
: inxen-ocaml/core/
, this builds the OCaml asmrun,
Bigarray and Str bindings using themirage-xen-posix
layer.mirage-xen-ocaml-bindings.pc
: inxen-ocaml/bindings/
, these are bindings
required by the OCaml libraries to MiniOS. Some of the bindings use MiniOS
external state and hence usemirage-xen-minios
, whereas others
(cstruct_stubs
andbarrier_stubs
are just OCaml bindings and so just
usemirage-xen-posix
).mirage-xen.pc
: depends on all the above to provide the same external
interface as the currentmirage-platform
.
The OCaml code is now built using OASIS, since the C code is built entirely
separately and could be moved out into a separate OPAM package entirely.
Improved reporting of top-level errors in Xen backend
- [xen] Fix error handling in
OS.Main.run
to enable a top-level
exception to signal to the Xen toolstack that it crashed (versus a
clean exit). This in turn letson_crash="preserve"
behaviour work
better in Xen VM description files. - Remove
mirage-xen.pc
file on uninstall.
Further Xen/MiniOS header cleanup
[xen] Updated headers and build for Mini-OS 0.5. This involves:
- Require libminios >= 0.5
- Remove old includes directory when installing
- Compile with
-fno-builtin
(avoids warnings about standard functions) - Removed
complex.h
(now provided by Openlibm) - Include
cdefs.h
fromtypes.h
(needed for__BEGIN_DECLS
) - Removed open from
unistd.h
(comes fromfcntl.h
) - Removed
assert.h
and__assert_fail
(provided by Mini-OS) - Removed
string.h
(provided by Mini-OS) - Removed
cdefs.h
(provided by Mini-OS) - Added missing
console.h
includes (forprintk
)
Add header definitions for Ctypes support
- Remove checksum stubs from Unix and Xen, as they are provided by
tcpip
now. - [xen] Define UINTx_MAX and SIZE_MAX in stdint.h, which is sufficient to let Ctypes compile (yallop/ocaml-ctypes#231)
Add Xen tracing and improve packaging of C runtime
- [xen] Report trace events for GC, block_domain, XenStore and event channels.
This introduces a new dependency on themirage-profile
package. - [xen] Install a
pkg-config
file to allow other projects to compile C stubs
againstmirage-xen
. - [xen] Remove duplication of OCaml header files inside the
include
tree.
Xen stability: use monotonic time, check for page aligned I/O and add assert stubs
- [xen] Assert that pages passed to the grant share API are page-aligned.
This always happens if they are created viaIo_page.create
, and
probably not true if made byCstruct.create
. - [xen] Use monotonic time for timing events, not wall-clock time.
- [xen] Provide functions that C code often uses for asserts (
abort
,
printf
, etc).