Skip to content
An implementation of channels using page-aligned memory
OCaml Makefile Standard ML
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

mirage-channel — Buffered channels for MirageOS FLOW types


Channels are buffered reader/writers built on top of unbuffered FLOW implementations.


module Channel = Channel.Make(Flow)
Channel.read_exactly ~len:16 t
>>= fun bufs -> (* read header of message *)
let payload_length = Cstruct.(LE.get_uint16 (concat bufs) 0) in
Channel.read_exactly ~len:payload_length t
>>= fun bufs -> (* payload of message *)

(* process message *)

Channel.write_buffer t header;
Channel.write_buffer t payload;
Channel.flush t
>>= fun () ->

mirage-channel is distributed under the ISC license.


mirage-channel can be installed with opam:

opam install channel

If you don't use opam consult the opam file for build instructions.


The documentation and API reference is automatically generated by ocamldoc from the interfaces. It can be consulted online and there is a generated version in the doc directory of the distribution.

Sample programs

If you installed mirage-channel with opam sample programs are located in the directory opam config var channel:doc.

In the distribution sample programs and tests are located in the test directory of the distribution. They can be built with:

./build test

The resulting binaries are in _build/test.

  • test.native tests the library, nothing should fail.
You can’t perform that action at this time.