1module Op :
2  sig
3    type operation =
4      Op.operation =
5        Debug
6      | Directory
7      | Read
8      | Getperms
9      | Watch
10      | Unwatch
11      | Transaction_start
12      | Transaction_end
13      | Introduce
14      | Release
15      | Getdomainpath
16      | Write
17      | Mkdir
18      | Rm
19      | Setperms
20      | Watchevent
21      | Error
22      | Isintroduced
23      | Resume
24      | Set_target
25      | Reset_watches
26      | Invalid
27    val operation_c_mapping : operation array
28    val size : int
29    val array_search : 'a -> 'a array -> int
30    val of_cval : int -> operation
31    val to_cval : operation -> int
32    val to_string : operation -> string
33  end
34module Packet :
35  sig
36    type t =
37      Packet.t = {
38      tid : int;
39      rid : int;
40      ty : Op.operation;
41      data : string;
42    }
43    exception Error of string
44    exception DataError of string
45    external string_of_header : int -> int -> int -> int -> string
46      = "stub_string_of_header"
47    val create : int -> int -> Op.operation -> string -> t
48    val of_partialpkt : Partial.pkt -> t
49    val to_string : t -> string
50    val unpack : t -> int * int * Op.operation * string
51    val get_tid : t -> int
52    val get_ty : t -> Op.operation
53    val get_data : t -> string
54    val get_rid : t -> int
55  end
56exception End_of_file
57exception Eagain
58exception Noent
59exception Invalid
60exception Reconnect
61type backend_mmap = {
62  mmap : Xenmmap.mmap_interface;
63  eventchn_notify : unit -> unit;
64  mutable work_again : bool;
65}
66type backend_fd = { fd : Unix.file_descr; }
67type backend = Fd of backend_fd | Xenmmap of backend_mmap
68type partial_buf = HaveHdr of Partial.pkt | NoHdr of int * bytes
69type t = {
70  backend : backend;
71  pkt_in : Packet.t Queue.t;
72  pkt_out : Packet.t Queue.t;
73  mutable partial_in : partial_buf;
74  mutable partial_out : string;
75}
76val init_partial_in : unit -> partial_buf
77val reconnect : t -> unit
78val queue : t -> Packet.t -> unit
79val read_fd : backend_fd -> 'a -> bytes -> int -> int
80val read_mmap : backend_mmap -> 'a -> bytes -> int -> int
81val read : t -> bytes -> int -> int
82val write_fd : backend_fd -> 'a -> string -> int -> int
83val write_mmap : backend_mmap -> 'a -> string -> int -> int
84val write : t -> string -> int -> int
85val output : t -> bool
86val input : t -> bool
87val newcon : backend -> t
88val open_fd : Unix.file_descr -> t
89val open_mmap : Xenmmap.mmap_interface -> (unit -> unit) -> t
90val close : t -> unit
91val is_fd : t -> bool
92val is_mmap : t -> bool
93val output_len : t -> int
94val has_new_output : t -> bool
95val has_old_output : t -> bool
96val has_output : t -> bool
97val peek_output : t -> Packet.t
98val input_len : t -> int
99val has_in_packet : t -> bool
100val get_in_packet : t -> Packet.t
101val has_more_input : t -> bool
102val is_selectable : t -> bool
103val get_fd : t -> Unix.file_descr
104