sig
  module Buffer :
    sig
      type t =
          (int, Bigarray.int8_unsigned_elt, Bigarray.c_layout)
          Bigarray.Array1.t
      exception Unaligned
      external page_size : unit -> int = "caml_aio_buffer_page_size"
        "noalloc"
      external create : int -> Aio.Buffer.t = "caml_aio_buffer_create"
      val clear : Aio.Buffer.t -> unit
      val length : Aio.Buffer.t -> int
      val get_int8 : Aio.Buffer.t -> int -> int
      val get_uint8 : Aio.Buffer.t -> int -> int
      val get_int16 : Aio.Buffer.t -> int -> int
      val get_uint16 : Aio.Buffer.t -> int -> int
      val get_int31 : Aio.Buffer.t -> int -> int
      val get_int32 : Aio.Buffer.t -> int -> int32
      val get_int64 : Aio.Buffer.t -> int -> int64
      val unsafe_get_uint8 : Aio.Buffer.t -> int -> int
      external unsafe_get_int8 : Aio.Buffer.t -> int -> int
        = "caml_aio_buffer_get_int8" "noalloc"
      external unsafe_get_uint16 : Aio.Buffer.t -> int -> int
        = "caml_aio_buffer_get_uint16" "noalloc"
      external unsafe_get_int16 : Aio.Buffer.t -> int -> int
        = "caml_aio_buffer_get_int16" "noalloc"
      external unsafe_get_int31 : Aio.Buffer.t -> int -> int
        = "caml_aio_buffer_get_int31" "noalloc"
      external unsafe_get_int32 : Aio.Buffer.t -> int -> int32
        = "caml_aio_buffer_get_int32"
      external unsafe_get_int64 : Aio.Buffer.t -> int -> int64
        = "caml_aio_buffer_get_int64"
      val set_int8 : Aio.Buffer.t -> int -> int -> unit
      val set_uint8 : Aio.Buffer.t -> int -> int -> unit
      val set_int16 : Aio.Buffer.t -> int -> int -> unit
      val set_uint16 : Aio.Buffer.t -> int -> int -> unit
      val set_int31 : Aio.Buffer.t -> int -> int -> unit
      val set_int32 : Aio.Buffer.t -> int -> int32 -> unit
      val set_int64 : Aio.Buffer.t -> int -> int64 -> unit
      val unsafe_set_uint8 : Aio.Buffer.t -> int -> int -> unit
      external unsafe_set_int8 : Aio.Buffer.t -> int -> int -> unit
        = "caml_aio_buffer_set_int8" "noalloc"
      val unsafe_set_uint16 : Aio.Buffer.t -> int -> int -> unit
      val unsafe_set_int16 : Aio.Buffer.t -> int -> int -> unit
      external unsafe_set_int31 : Aio.Buffer.t -> int -> int -> unit
        = "caml_aio_buffer_set_int31" "noalloc"
      external unsafe_set_int32 : Aio.Buffer.t -> int -> int32 -> unit
        = "caml_aio_buffer_set_int32" "noalloc"
      external unsafe_set_int64 : Aio.Buffer.t -> int -> int64 -> unit
        = "caml_aio_buffer_set_int64" "noalloc"
      external unsafe_get_substr : Aio.Buffer.t -> int -> int -> string
        = "caml_aio_buf_unsafe_get_substr_stub"
      val get_substr : Aio.Buffer.t -> int -> int -> string
      val get_str : Aio.Buffer.t -> string
      external unsafe_set_substr : Aio.Buffer.t -> int -> string -> unit
        = "caml_aio_buf_unsafe_set_substr_stub"
      val set_substr : Aio.Buffer.t -> int -> string -> unit
      val set_str : string -> Aio.Buffer.t
      val get_be_int16 : Aio.Buffer.t -> int -> int
      val get_be_uint16 : Aio.Buffer.t -> int -> int
      val get_be_int31 : Aio.Buffer.t -> int -> int
      val get_be_int32 : Aio.Buffer.t -> int -> int32
      val get_be_int64 : Aio.Buffer.t -> int -> int64
      external unsafe_get_be_int16 : Aio.Buffer.t -> int -> int
        = "caml_aio_buffer_get_be_int16" "noalloc"
      external unsafe_get_be_uint16 : Aio.Buffer.t -> int -> int
        = "caml_aio_buffer_get_be_uint16" "noalloc"
      external unsafe_get_be_int31 : Aio.Buffer.t -> int -> int
        = "caml_aio_buffer_get_be_int31" "noalloc"
      external unsafe_get_be_int32 : Aio.Buffer.t -> int -> int32
        = "caml_aio_buffer_get_be_int32"
      external unsafe_get_be_int64 : Aio.Buffer.t -> int -> int64
        = "caml_aio_buffer_get_be_int64"
      val set_be_int16 : Aio.Buffer.t -> int -> int -> unit
      val set_be_uint16 : Aio.Buffer.t -> int -> int -> unit
      val set_be_int31 : Aio.Buffer.t -> int -> int -> unit
      val set_be_int32 : Aio.Buffer.t -> int -> int32 -> unit
      val set_be_int64 : Aio.Buffer.t -> int -> int64 -> unit
      external unsafe_set_be_int16 : Aio.Buffer.t -> int -> int -> unit
        = "caml_aio_buffer_set_be_int16" "noalloc"
      external unsafe_set_be_uint16 : Aio.Buffer.t -> int -> int -> unit
        = "caml_aio_buffer_set_be_uint16" "noalloc"
      external unsafe_set_be_int31 : Aio.Buffer.t -> int -> int -> unit
        = "caml_aio_buffer_set_be_int31" "noalloc"
      external unsafe_set_be_int32 : Aio.Buffer.t -> int -> int32 -> unit
        = "caml_aio_buffer_set_be_int32" "noalloc"
      external unsafe_set_be_int64 : Aio.Buffer.t -> int -> int64 -> unit
        = "caml_aio_buffer_set_be_int64" "noalloc"
      val get_le_int16 : Aio.Buffer.t -> int -> int
      val get_le_uint16 : Aio.Buffer.t -> int -> int
      val get_le_int31 : Aio.Buffer.t -> int -> int
      val get_le_int32 : Aio.Buffer.t -> int -> int32
      val get_le_int64 : Aio.Buffer.t -> int -> int64
      external unsafe_get_le_int16 : Aio.Buffer.t -> int -> int
        = "caml_aio_buffer_get_le_int16" "noalloc"
      external unsafe_get_le_uint16 : Aio.Buffer.t -> int -> int
        = "caml_aio_buffer_get_le_uint16" "noalloc"
      external unsafe_get_le_int31 : Aio.Buffer.t -> int -> int
        = "caml_aio_buffer_get_le_int31" "noalloc"
      external unsafe_get_le_int32 : Aio.Buffer.t -> int -> int32
        = "caml_aio_buffer_get_le_int32"
      external unsafe_get_le_int64 : Aio.Buffer.t -> int -> int64
        = "caml_aio_buffer_get_le_int64"
      val set_le_int16 : Aio.Buffer.t -> int -> int -> unit
      val set_le_uint16 : Aio.Buffer.t -> int -> int -> unit
      val set_le_int31 : Aio.Buffer.t -> int -> int -> unit
      val set_le_int32 : Aio.Buffer.t -> int -> int32 -> unit
      val set_le_int64 : Aio.Buffer.t -> int -> int64 -> unit
      external unsafe_set_le_int16 : Aio.Buffer.t -> int -> int -> unit
        = "caml_aio_buffer_set_le_int16" "noalloc"
      external unsafe_set_le_uint16 : Aio.Buffer.t -> int -> int -> unit
        = "caml_aio_buffer_set_le_uint16" "noalloc"
      external unsafe_set_le_int31 : Aio.Buffer.t -> int -> int -> unit
        = "caml_aio_buffer_set_le_int31" "noalloc"
      external unsafe_set_le_int32 : Aio.Buffer.t -> int -> int32 -> unit
        = "caml_aio_buffer_set_le_int32" "noalloc"
      external unsafe_set_le_int64 : Aio.Buffer.t -> int -> int64 -> unit
        = "caml_aio_buffer_set_le_int64" "noalloc"
      val get_net_int16 : Aio.Buffer.t -> int -> int
      val get_net_uint16 : Aio.Buffer.t -> int -> int
      val get_net_int31 : Aio.Buffer.t -> int -> int
      val get_net_int32 : Aio.Buffer.t -> int -> int32
      val get_net_int64 : Aio.Buffer.t -> int -> int64
      val unsafe_get_net_int16 : Aio.Buffer.t -> int -> int
      val unsafe_get_net_uint16 : Aio.Buffer.t -> int -> int
      val unsafe_get_net_int31 : Aio.Buffer.t -> int -> int
      val unsafe_get_net_int32 : Aio.Buffer.t -> int -> int32
      val unsafe_get_net_int64 : Aio.Buffer.t -> int -> int64
      val set_net_int16 : Aio.Buffer.t -> int -> int -> unit
      val set_net_uint16 : Aio.Buffer.t -> int -> int -> unit
      val set_net_int31 : Aio.Buffer.t -> int -> int -> unit
      val set_net_int32 : Aio.Buffer.t -> int -> int32 -> unit
      val set_net_int64 : Aio.Buffer.t -> int -> int64 -> unit
      val unsafe_set_net_int16 : Aio.Buffer.t -> int -> int -> unit
      val unsafe_set_net_uint16 : Aio.Buffer.t -> int -> int -> unit
      val unsafe_set_net_int31 : Aio.Buffer.t -> int -> int -> unit
      val unsafe_set_net_int32 : Aio.Buffer.t -> int -> int32 -> unit
      val unsafe_set_net_int64 : Aio.Buffer.t -> int -> int64 -> unit
    end
  type result =
      Result of Aio.Buffer.t
    | Errno of int
    | Partial of Aio.Buffer.t * int
  exception Error of int
  exception Incomplete of Aio.Buffer.t * int
  val result : Aio.result -> Aio.Buffer.t
  type context
  val context : int -> Aio.context
  val read :
    Aio.context ->
    Unix.file_descr -> int64 -> Aio.Buffer.t -> (Aio.result -> unit) -> unit
  val write :
    Aio.context ->
    Unix.file_descr -> int64 -> Aio.Buffer.t -> (Aio.result -> unit) -> unit
  val poll :
    Aio.context ->
    Unix.file_descr -> int -> (Unix.file_descr -> unit) -> unit
  val run : Aio.context -> unit
  val process : Aio.context -> unit
  val fd : Aio.context -> Unix.file_descr
  val sync_read : Unix.file_descr -> int64 -> Aio.Buffer.t -> unit
  val sync_write : Unix.file_descr -> int64 -> Aio.Buffer.t -> unit
end