package mirage-block-combinators

  1. Overview
  2. Docs
Block signatures and implementations for MirageOS using Lwt

Install

Dune Dependency

Authors

Maintainers

Sources

mirage-block-3.0.2.tbz
sha256=5002d47de2f41b599f4ac2e001bfc7a50e8e575d98b58f8650e606eb2854c002
sha512=5b36b4b8a886f62f87950cae355d14c0ecc8f70f1be1287d5da0b413f7a78020b11e9771cb16ffbbbb5654f6f902c91436cfbbd4a3cc2d9ba9883c0c579d156f

Description

This repo contains generic operations over Mirage BLOCK devices. This package is specialised to the Lwt concurrency library for IO.

Tags

org:mirage

Published: 29 Nov 2022

README

Block implementations for mirage

This repo contains generic operations over Mirage BLOCK devices.

Please consult the API documentation.

Example usage

In a top-level like utop:

# #require "mirage-block";;
# #require "mirage-block-ramdisk";;
# #require "lwt.syntax";;

# lwt t_or_error = Ramdisk.create ~name:"hello" ~size_sectors:1024L ~sector_size:512;;
val t_or_error : [ `Error of Ramdisk.error | `Ok of Ramdisk.t ] = `Ok <abstr>

# let t = Mirage_block.Error.ok_exn t_or_error;;
val t : Ramdisk.t = <abstr>

# let page = Cstruct.create 4096;;
val page : Cstruct.t =
  {Cstruct.buffer = <abstr>; off = 0; len = 4096}

# lwt result_or_error = Ramdisk.read t 0L [ page ];;
val result_or_error : [ `Error of Ramdisk.error | `Ok of unit ] = `Ok ()

# lwt ok_or_error = Mirage_block.sparse_copy (module Ramdisk) t (module Ramdisk) t;;
val ok_or_error :
  [ `Error of [> `Different_sizes | `Is_read_only | `Msg of bytes ]
  | `Ok of unit ] = `Ok ()

Dependencies (6)

  1. mirage-block = version
  2. logs
  3. lwt >= "4.0.0"
  4. cstruct >= "6.0.0"
  5. dune >= "1.0"
  6. ocaml >= "4.06.0"

Dev Dependencies

None

Used by (6)

  1. chamelon >= "0.1.1"
  2. chamelon-unix >= "0.1.1"
  3. fat-filesystem >= "0.14.0"
  4. mirage-block-partition
  5. mirage-block-ramdisk >= "0.5"
  6. qcow >= "0.11.0"

Conflicts

None