sig
  module Sysinfo :
    sig
      type t =
        Linux_ext.Sysinfo.t = {
        uptime : Span.t;
        load1 : int;
        load5 : int;
        load15 : int;
        total_ram : int;
        free_ram : int;
        shared_ram : int;
        buffer_ram : int;
        total_swap : int;
        free_swap : int;
        procs : int;
        totalhigh : int;
        freehigh : int;
        mem_unit : int;
      }
      val sysinfo : (unit -> t) Or_error.t
      val bin_t : t Bin_prot.Type_class.t
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Write_ml.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_writer_t : t Bin_prot.Type_class.writer
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  val sendfile :
    (?pos:int ->
     ?len:int -> fd:Unix.File_descr.t -> Unix.File_descr.t -> int)
    Or_error.t
  type tcp_bool_option = Linux_ext.tcp_bool_option = TCP_CORK
  val gettcpopt_bool :
    (Unix.File_descr.t -> tcp_bool_option -> bool) Or_error.t
  val settcpopt_bool :
    (Unix.File_descr.t -> tcp_bool_option -> bool -> unit) Or_error.t
  val send_nonblocking_no_sigpipe :
    (Unix.File_descr.t -> ?pos:int -> ?len:int -> string -> int option)
    Or_error.t
  val send_no_sigpipe :
    (Unix.File_descr.t -> ?pos:int -> ?len:int -> string -> int)
    Or_error.t
  val sendmsg_nonblocking_no_sigpipe :
    (Unix.File_descr.t ->
     ?count:int -> string Unix.IOVec.t array -> int option)
    Or_error.t
  module Clock :
    sig
      type t = Linux_ext.Clock.t
      val get : (Thread.t -> t) Or_error.t
      val get_time : (t -> Span.t) Or_error.t
      val set_time : (t -> Span.t -> unit) Or_error.t
      val get_resolution : (t -> Span.t) Or_error.t
      val get_process_clock : (unit -> t) Or_error.t
      val get_thread_clock : (unit -> t) Or_error.t
    end
  module Timerfd :
    sig
      module Clock :
        sig
          type t = Linux_ext.Timerfd.Clock.t
          val realtime : t
          val monotonic : t
          val t_of_sexp : Sexplib.Sexp.t -> t
          val sexp_of_t : t -> Sexplib.Sexp.t
          val compare : t -> t -> int
          val bin_t : t Bin_prot.Type_class.t
          val bin_read_t : t Bin_prot.Read_ml.reader
          val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
          val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
          val bin_reader_t : t Bin_prot.Type_class.reader
          val bin_size_t : t Bin_prot.Size.sizer
          val bin_write_t : t Bin_prot.Write_ml.writer
          val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
          val bin_writer_t : t Bin_prot.Type_class.writer
        end
      module Flags :
        sig
          type t = Linux_ext.Timerfd.Flags.t
          val of_int : int -> t
          val to_int_exn : t -> int
          val equal : t -> t -> bool
          val empty : t
          val ( + ) : t -> t -> t
          val ( - ) : t -> t -> t
          val intersect : t -> t -> t
          val complement : t -> t
          val do_intersect : t -> t -> bool
          val are_disjoint : t -> t -> bool
          val nonblock : t
          val cloexec : t
          val sexp_of_t : t -> Sexplib.Sexp.t
        end
      type t = Linux_ext.Timerfd.t
      val create : (?flags:Flags.t -> Clock.t -> t) Or_error.t
      val set : t -> [ `After of Span.t | `At of Time.t ] -> unit
      val set_repeating :
        ?initial:[ `After of Span.t | `At of Time.t ] -> t -> Span.t -> unit
      val clear : t -> unit
      type repeat =
        Linux_ext.Timerfd.repeat = {
        fire_after : Span.t;
        interval : Span.t;
      }
      val get :
        t -> [ `Fire_after of Span.t | `Not_armed | `Repeat of repeat ]
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val compare : t -> t -> int
      val bin_t : t Bin_prot.Type_class.t
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Write_ml.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_writer_t : t Bin_prot.Type_class.writer
    end
  val pr_set_pdeathsig : (Signal.t -> unit) Or_error.t
  val pr_get_pdeathsig : (unit -> Signal.t) Or_error.t
  val pr_set_name_first16 : (string -> unit) Or_error.t
  val pr_get_name : (unit -> string) Or_error.t
  val file_descr_realpath : (Unix.File_descr.t -> string) Or_error.t
  val out_channel_realpath : (out_channel -> string) Or_error.t
  val in_channel_realpath : (in_channel -> string) Or_error.t
  val sched_setaffinity :
    (?pid:Pid.t -> cpuset:int list -> unit -> unit) Or_error.t
  val sched_setaffinity_this_thread : (cpuset:int list -> unit) Or_error.t
  val cores : (unit -> int) Or_error.t
  val get_terminal_size : (unit -> int * int) Or_error.t
  val gettid : (unit -> int) Or_error.t
  module Priority :
    sig
      type t = Linux_ext.Priority.t
      val equal : t -> t -> bool
      val of_int : int -> t
      val to_int : t -> int
      val incr : t -> t
      val decr : t -> t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  val setpriority : (Priority.t -> unit) Or_error.t
  val getpriority : (unit -> Priority.t) Or_error.t
  val get_ipv4_address_for_interface : (string -> string) Or_error.t
  val bind_to_interface :
    (Unix.File_descr.t -> [ `Any | `Interface_name of string ] -> unit)
    Or_error.t
  module Epoll :
    sig
      module Flags :
        sig
          type t = Linux_ext.Epoll.Flags.t
          val of_int : int -> t
          val to_int_exn : t -> int
          val equal : t -> t -> bool
          val empty : t
          val ( + ) : t -> t -> t
          val ( - ) : t -> t -> t
          val intersect : t -> t -> t
          val complement : t -> t
          val do_intersect : t -> t -> bool
          val are_disjoint : t -> t -> bool
          val none : t
          val in_ : t
          val out : t
          val pri : t
          val err : t
          val hup : t
          val et : t
          val oneshot : t
          val sexp_of_t : t -> Sexplib.Sexp.t
        end
      type t = Linux_ext.Epoll.t
      val invariant : t -> unit
      val create :
        (num_file_descrs:int -> max_ready_events:int -> t) Or_error.t
      val find : t -> Unix.File_descr.t -> Flags.t option
      val find_exn : t -> Unix.File_descr.t -> Flags.t
      val set : t -> Unix.File_descr.t -> Flags.t -> unit
      val remove : t -> Unix.File_descr.t -> unit
      val iter : t -> f:(Unix.File_descr.t -> Flags.t -> unit) -> unit
      val wait :
        t ->
        timeout:[ `After of Span.t | `Immediately | `Never ] ->
        [ `Ok | `Timeout ]
      val iter_ready :
        t -> f:(Unix.File_descr.t -> Flags.t -> unit) -> unit
      val fold_ready :
        t ->
        init:'-> f:('-> Unix.File_descr.t -> Flags.t -> 'a) -> 'a
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  val bin_tcp_bool_option : tcp_bool_option Bin_prot.Type_class.t
  val bin_read_tcp_bool_option : tcp_bool_option Bin_prot.Read_ml.reader
  val bin_read_tcp_bool_option_ :
    tcp_bool_option Bin_prot.Unsafe_read_c.reader
  val bin_read_tcp_bool_option__ :
    (int -> tcp_bool_option) Bin_prot.Unsafe_read_c.reader
  val bin_reader_tcp_bool_option : tcp_bool_option Bin_prot.Type_class.reader
  val bin_size_tcp_bool_option : tcp_bool_option Bin_prot.Size.sizer
  val bin_write_tcp_bool_option : tcp_bool_option Bin_prot.Write_ml.writer
  val bin_write_tcp_bool_option_ :
    tcp_bool_option Bin_prot.Unsafe_write_c.writer
  val bin_writer_tcp_bool_option : tcp_bool_option Bin_prot.Type_class.writer
  val tcp_bool_option_of_sexp : Sexplib.Sexp.t -> tcp_bool_option
  val sexp_of_tcp_bool_option : tcp_bool_option -> Sexplib.Sexp.t
end