sig
  module Epoll :
    sig
      type flag = IN | OUT | PRI | ERR | HUP | ET | ONESHOT
      val bin_size_flag : Extended_linux.Epoll.flag Bin_prot.Size.sizer
      val bin_write_flag : Extended_linux.Epoll.flag Bin_prot.Write_ml.writer
      val bin_write_flag_ :
        Extended_linux.Epoll.flag Bin_prot.Unsafe_write_c.writer
      val bin_writer_flag :
        Extended_linux.Epoll.flag Bin_prot.Type_class.writer
      val bin_read_flag : Extended_linux.Epoll.flag Bin_prot.Read_ml.reader
      val bin_read_flag_ :
        Extended_linux.Epoll.flag Bin_prot.Unsafe_read_c.reader
      val bin_read_flag__ :
        (int -> Extended_linux.Epoll.flag) Bin_prot.Unsafe_read_c.reader
      val bin_reader_flag :
        Extended_linux.Epoll.flag Bin_prot.Type_class.reader
      val bin_flag : Extended_linux.Epoll.flag Bin_prot.Type_class.t
      val sexp_of_flag : Extended_linux.Epoll.flag -> Sexplib.Sexp.t
      val flag_of_sexp : Sexplib.Sexp.t -> Extended_linux.Epoll.flag
      type flags
      val make_flags :
        Extended_linux.Epoll.flag array -> Extended_linux.Epoll.flags
      val get_flags :
        Extended_linux.Epoll.flags -> Extended_linux.Epoll.flag array
      val has_in : Extended_linux.Epoll.flags -> bool
      val has_out : Extended_linux.Epoll.flags -> bool
      val has_pri : Extended_linux.Epoll.flags -> bool
      val has_err : Extended_linux.Epoll.flags -> bool
      val has_hup : Extended_linux.Epoll.flags -> bool
      val has_et : Extended_linux.Epoll.flags -> bool
      val has_oneshot : Extended_linux.Epoll.flags -> bool
      val flag_to_string : Extended_linux.Epoll.flag -> string
      val create : int -> Core.Std.Unix.file_descr
      val add :
        epfd:Core.Std.Unix.file_descr ->
        fd:Core.Std.Unix.file_descr -> Extended_linux.Epoll.flags -> unit
      val modify :
        epfd:Core.Std.Unix.file_descr ->
        fd:Core.Std.Unix.file_descr -> Extended_linux.Epoll.flags -> unit
      val del :
        epfd:Core.Std.Unix.file_descr -> fd:Core.Std.Unix.file_descr -> unit
      val wait :
        Core.Std.Unix.file_descr ->
        maxevents:int ->
        timeout:int ->
        (Core.Std.Unix.file_descr * Extended_linux.Epoll.flags) array
    end
  module Open_fds :
    sig
      type file = { name : string; deleted : bool; }
      val bin_size_file : Extended_linux.Open_fds.file Bin_prot.Size.sizer
      val bin_write_file :
        Extended_linux.Open_fds.file Bin_prot.Write_ml.writer
      val bin_write_file_ :
        Extended_linux.Open_fds.file Bin_prot.Unsafe_write_c.writer
      val bin_writer_file :
        Extended_linux.Open_fds.file Bin_prot.Type_class.writer
      val bin_read_file :
        Extended_linux.Open_fds.file Bin_prot.Read_ml.reader
      val bin_read_file_ :
        Extended_linux.Open_fds.file Bin_prot.Unsafe_read_c.reader
      val bin_read_file__ :
        (int -> Extended_linux.Open_fds.file) Bin_prot.Unsafe_read_c.reader
      val bin_reader_file :
        Extended_linux.Open_fds.file Bin_prot.Type_class.reader
      val bin_file : Extended_linux.Open_fds.file Bin_prot.Type_class.t
      val sexp_of_file : Extended_linux.Open_fds.file -> Sexplib.Sexp.t
      val file_of_sexp : Sexplib.Sexp.t -> Extended_linux.Open_fds.file
      type kind =
          File of Extended_linux.Open_fds.file
        | Socket of int64
        | Pipe of int64
        | Inotify
        | Unknown of string
      val bin_size_kind : Extended_linux.Open_fds.kind Bin_prot.Size.sizer
      val bin_write_kind :
        Extended_linux.Open_fds.kind Bin_prot.Write_ml.writer
      val bin_write_kind_ :
        Extended_linux.Open_fds.kind Bin_prot.Unsafe_write_c.writer
      val bin_writer_kind :
        Extended_linux.Open_fds.kind Bin_prot.Type_class.writer
      val bin_read_kind :
        Extended_linux.Open_fds.kind Bin_prot.Read_ml.reader
      val bin_read_kind_ :
        Extended_linux.Open_fds.kind Bin_prot.Unsafe_read_c.reader
      val bin_read_kind__ :
        (int -> Extended_linux.Open_fds.kind) Bin_prot.Unsafe_read_c.reader
      val bin_reader_kind :
        Extended_linux.Open_fds.kind Bin_prot.Type_class.reader
      val bin_kind : Extended_linux.Open_fds.kind Bin_prot.Type_class.t
      val sexp_of_kind : Extended_linux.Open_fds.kind -> Sexplib.Sexp.t
      val kind_of_sexp : Sexplib.Sexp.t -> Extended_linux.Open_fds.kind
      type t = { fd : int; kind : Extended_linux.Open_fds.kind; }
      val bin_size_t : Extended_linux.Open_fds.t Bin_prot.Size.sizer
      val bin_write_t : Extended_linux.Open_fds.t Bin_prot.Write_ml.writer
      val bin_write_t_ :
        Extended_linux.Open_fds.t Bin_prot.Unsafe_write_c.writer
      val bin_writer_t : Extended_linux.Open_fds.t Bin_prot.Type_class.writer
      val bin_read_t : Extended_linux.Open_fds.t Bin_prot.Read_ml.reader
      val bin_read_t_ :
        Extended_linux.Open_fds.t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ :
        (int -> Extended_linux.Open_fds.t) Bin_prot.Unsafe_read_c.reader
      val bin_reader_t : Extended_linux.Open_fds.t Bin_prot.Type_class.reader
      val bin_t : Extended_linux.Open_fds.t Bin_prot.Type_class.t
      val sexp_of_t : Extended_linux.Open_fds.t -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> Extended_linux.Open_fds.t
      val discover : ?pid:int -> unit -> Extended_linux.Open_fds.t list
    end
end