package mirage-block-ramdisk

  1. Overview
  2. No Docs
In-memory BLOCK device for MirageOS

Install

Dune Dependency

Authors

Maintainers

Sources

mirage-block-ramdisk-0.6.tbz
sha256=81a40f3e923385ec304164e2b8984acddd01c496590260b305bc077e57056850
sha512=aa8aabb18c81cb6cdec404d404809faeb28be55f24f044aaca333f34ea2bbc2c064cfec3b32fef55e614a945bcd458b96d5c46067d454e188672ad6eeaa6b4b7

doc/mirage-block-ramdisk/Ramdisk/index.html

Module RamdiskSource

An in-memory BLOCK device also known as a Ramdisk

Basic operation

include Mirage_block.S
Sourcetype nonrec error = private [>
  1. | Mirage_block.error
]

The type for block errors.

Sourceval pp_error : error Fmt.t

pp_error is the pretty-printer for errors.

Sourcetype nonrec write_error = private [>
  1. | Mirage_block.write_error
]

The type for write errors.

Sourceval pp_write_error : write_error Fmt.t

pp_write_error is the pretty-printer for write errors.

Sourcetype t

The type representing the internal state of the block device

Sourceval disconnect : t -> unit Lwt.t

Disconnect from the device. While this might take some time to complete, it can never result in an error.

Sourceval get_info : t -> Mirage_block.info Lwt.t

Query the characteristics of a specific block device

Sourceval read : t -> int64 -> Cstruct.t list -> (unit, error) result Lwt.t

read device sector_start buffers reads data starting at sector_start from the block device into buffers. Ok () means the buffers have been filled. Error _ indicates an I/O error has happened and some of the buffers may not be filled. Each of elements in the list buffers must be a whole number of sectors in length. The list of buffers can be of any length. Some implementations may further require that each element in buffers is exactly sector_size long.

Sourceval write : t -> int64 -> Cstruct.t list -> (unit, write_error) result Lwt.t

write device sector_start buffers writes data from buffers onto the block device starting at sector_start. Ok () means the contents of the buffers have been written. Error _ indicates a partial failure in which some of the writes may not have happened.

Once submitted, it is not possible to cancel a request and there is no timeout.

The operation may fail with: `Is_read_only: the device is read-only, no data has been written.

Each of buffers must be a whole number of sectors in length. The list of buffers can be of any length. Some implementations may further require that each element in buffers is exactly sector_size long.

The data will not be copied, so the supplied buffers must not be re-used until the IO operation completes.

Sourceval connect : name:string -> t Lwt.t

Connect to the named ramdisk.

Sourceval create : name:string -> size_sectors:int64 -> sector_size:int -> (t, error) result Lwt.t

Create an in-memory block device (a "ramdisk") with a given name, total size in sectors and sector size. Two calls to connect with the same name will return the same block device

Sourceval destroy : name:string -> unit

Destroy removes an in-memory block device. Subsequent calls to connect will create a fresh empty device.

Resizing support

Sourceval resize : t -> int64 -> (unit, write_error) result Lwt.t

resize t new_size_sectors attempts to resize the connected device to have the given number of sectors. If successful, subsequent calls to get_info will reflect the new size.

Querying sparseness information

Sourceval seek_unmapped : t -> int64 -> (int64, error) result Lwt.t

seek_unmapped t start returns the offset of the next guaranteed zero-filled region (typically guaranteed because it is unmapped)

Sourceval seek_mapped : t -> int64 -> (int64, error) result Lwt.t

seek_mapped t start returns the offset of the next regoin of the device which may have data in it (typically this is the next mapped region)

Compatibility

Sourceval flush : t -> (unit, write_error) result Lwt.t

flush t is a no-op on a Ramdisk

OCaml

Innovation. Community. Security.