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