sig
  exception Not_available of string
  external fsync : Unix.file_descr -> unit = "caml_extunix_fsync"
  external fdatasync : Unix.file_descr -> unit = "caml_extunix_fdatasync"
  external eventfd : int -> Unix.file_descr = "caml_extunix_eventfd"
  external eventfd_read : Unix.file_descr -> int64
    = "caml_extunix_eventfd_read"
  external eventfd_write : Unix.file_descr -> int64 -> unit
    = "caml_extunix_eventfd_write"
  external dirfd : Unix.dir_handle -> Unix.file_descr = "caml_extunix_dirfd"
  type statvfs =
    ExtUnixAll.statvfs = {
    f_bsize : int;
    f_blocks : int64;
    f_bfree : int64;
    f_bavail : int64;
    f_files : int64;
    f_ffree : int64;
    f_favail : int64;
    f_fsid : int64;
    f_flag : int;
    f_namemax : int;
  }
  external statvfs : string -> statvfs = "caml_extunix_statvfs"
  external fstatvfs : Unix.file_descr -> statvfs = "caml_extunix_fstatvfs"
  type at_flag =
    ExtUnixAll.at_flag =
      AT_EACCESS
    | AT_SYMLINK_NOFOLLOW
    | AT_REMOVEDIR
    | AT_SYMLINK_FOLLOW
  external openat :
    Unix.file_descr ->
    string -> Unix.open_flag list -> Unix.file_perm -> Unix.file_descr
    = "caml_extunix_openat"
  external fstatat : Unix.file_descr -> string -> Unix.stats
    = "caml_extunix_fstatat"
  external unlinkat : Unix.file_descr -> string -> at_flag list -> unit
    = "caml_extunix_unlinkat"
  external renameat :
    Unix.file_descr -> string -> Unix.file_descr -> string -> unit
    = "caml_extunix_renameat"
  external mkdirat : Unix.file_descr -> string -> int -> unit
    = "caml_extunix_mkdirat"
  external linkat :
    Unix.file_descr ->
    string -> Unix.file_descr -> string -> at_flag list -> unit
    = "caml_extunix_linkat"
  external symlinkat : string -> Unix.file_descr -> string -> unit
    = "caml_extunix_symlinkat"
  module Uname :
    sig
      type t =
        ExtUnixAll.Uname.t = {
        sysname : string;
        nodename : string;
        release : string;
        version : string;
        machine : string;
      }
      val to_string : t -> string
    end
  external uname : unit -> Uname.t = "caml_extunix_uname"
  type advice =
    ExtUnixAll.advice =
      POSIX_FADV_NORMAL
    | POSIX_FADV_SEQUENTIAL
    | POSIX_FADV_RANDOM
    | POSIX_FADV_NOREUSE
    | POSIX_FADV_WILLNEED
    | POSIX_FADV_DONTNEED
  external fadvise : Unix.file_descr -> int -> int -> advice -> unit
    = "caml_extunix_fadvise"
  external fallocate : Unix.file_descr -> int -> int -> unit
    = "caml_extunix_fallocate"
  module LargeFile :
    sig
      external fadvise : Unix.file_descr -> int64 -> int64 -> advice -> unit
        = "caml_extunix_fadvise64"
      external fallocate : Unix.file_descr -> int64 -> int64 -> unit
        = "caml_extunix_fallocate64"
    end
  module Ioctl :
    sig
      external siocgifconf : sock:Unix.file_descr -> (string * string) list
        = "caml_extunix_ioctl_siocgifconf"
      external crtscts : Unix.file_descr -> int = "caml_extunix_crtscts"
      external tiocmget : Unix.file_descr -> int
        = "caml_extunix_ioctl_TIOCMGET"
      external tiocmset : Unix.file_descr -> int -> unit
        = "caml_extunix_ioctl_TIOCMSET"
      external tiocmbic : Unix.file_descr -> int -> unit
        = "caml_extunix_ioctl_TIOCMBIC"
      external tiocmbis : Unix.file_descr -> int -> unit
        = "caml_extunix_ioctl_TIOCMBIS"
    end
  external ttyname : Unix.file_descr -> string = "caml_extunix_ttyname"
  external ctermid : unit -> string = "caml_extunix_ctermid"
  external setpgid : int -> int -> unit = "caml_extunix_setpgid"
  external getpgid : int -> int = "caml_extunix_getpgid"
  external getsid : int -> int = "caml_extunix_getsid"
  external setreuid : int -> int -> unit = "caml_extunix_setreuid"
  external setregid : int -> int -> unit = "caml_extunix_setregid"
  external realpath : string -> string = "caml_extunix_realpath"
  external is_open_descr : Unix.file_descr -> bool
    = "caml_extunix_is_open_descr"
  external tcgetpgrp : Unix.file_descr -> int = "caml_extunix_tcgetpgrp"
  external tcsetpgrp : Unix.file_descr -> int -> unit
    = "caml_extunix_tcsetpgrp"
  val int_of_file_descr : Unix.file_descr -> int
  val file_descr_of_int : int -> Unix.file_descr
  external signalfd :
    ?fd:Unix.file_descr ->
    sigs:int list -> flags:int list -> unit -> Unix.file_descr
    = "caml_extunix_signalfd"
  type ssi = ExtUnixAll.ssi
  external signalfd_read : Unix.file_descr -> ssi
    = "caml_extunix_signalfd_read"
  external ssi_signo_sys : ssi -> int = "caml_extunix_ssi_signo_sys"
  external ssi_signo : ssi -> int32 = "caml_extunix_ssi_signo"
  external ssi_errno : ssi -> int32 = "caml_extunix_ssi_errno"
  external ssi_code : ssi -> int32 = "caml_extunix_ssi_code"
  external ssi_pid : ssi -> int32 = "caml_extunix_ssi_pid"
  external ssi_uid : ssi -> int32 = "caml_extunix_ssi_uid"
  external ssi_fd : ssi -> Unix.file_descr = "caml_extunix_ssi_fd"
  external ssi_tid : ssi -> int32 = "caml_extunix_ssi_tid"
  external ssi_band : ssi -> int32 = "caml_extunix_ssi_band"
  external ssi_overrun : ssi -> int32 = "caml_extunix_ssi_overrun"
  external ssi_trapno : ssi -> int32 = "caml_extunix_ssi_trapno"
  external ssi_status : ssi -> int32 = "caml_extunix_ssi_status"
  external ssi_int : ssi -> int32 = "caml_extunix_ssi_int"
  external ssi_ptr : ssi -> int64 = "caml_extunix_ssi_ptr"
  external ssi_utime : ssi -> int64 = "caml_extunix_ssi_utime"
  external ssi_stime : ssi -> int64 = "caml_extunix_ssi_stime"
  external ssi_addr : ssi -> int64 = "caml_extunix_ssi_addr"
  external ptrace_traceme : unit -> unit = "caml_extunix_ptrace_traceme"
  external ptrace_peekdata : int -> nativeint -> nativeint
    = "caml_extunix_ptrace_peekdata"
  external ptrace_peektext : int -> nativeint -> nativeint
    = "caml_extunix_ptrace_peektext"
  type ptrace_request =
    ExtUnixAll.ptrace_request =
      PTRACE_ATTACH
    | PTRACE_DETACH
  external ptrace : int -> ptrace_request -> unit = "caml_extunix_ptrace"
  type which_prio_t =
    ExtUnixAll.which_prio_t =
      PRIO_PROCESS of int
    | PRIO_PGRP of int
    | PRIO_USER of int
  type priority = int
  type resource =
    ExtUnixAll.resource =
      RLIMIT_CORE
    | RLIMIT_CPU
    | RLIMIT_DATA
    | RLIMIT_FSIZE
    | RLIMIT_NOFILE
    | RLIMIT_STACK
    | RLIMIT_AS
  val string_of_resource : resource -> string
  module Rlimit :
    sig
      type t = int64 option
      val string_of_bytes : int64 -> string
      val to_string : ?r:resource -> int64 option -> string
      val compare : Int64.t option -> Int64.t option -> int
      val eq : Int64.t option -> Int64.t option -> bool
      val gt : Int64.t option -> Int64.t option -> bool
      val ge : Int64.t option -> Int64.t option -> bool
      val lt : Int64.t option -> Int64.t option -> bool
      val le : Int64.t option -> Int64.t option -> bool
    end
  external getpriority : which_prio_t -> priority
    = "caml_extunix_getpriority"
  external setpriority : which_prio_t -> priority -> unit
    = "caml_extunix_setpriority"
  external getrlimit : resource -> Rlimit.t * Rlimit.t
    = "caml_extunix_getrlimit"
  external setrlimit : resource -> soft:Rlimit.t -> hard:Rlimit.t -> unit
    = "caml_extunix_setrlimit"
  external sys_exit : int -> 'a = "caml_sys_exit"
  type mlockall_flag = ExtUnixAll.mlockall_flag = MCL_CURRENT | MCL_FUTURE
  external mlockall : mlockall_flag list -> unit = "caml_extunix_mlockall"
  external munlockall : unit -> unit = "caml_extunix_munlockall"
  external strptime : string -> string -> Unix.tm = "caml_extunix_strptime"
  external asctime : Unix.tm -> string = "caml_extunix_asctime"
  external strftime : string -> Unix.tm -> string = "caml_extunix_strftime"
  external tzname : bool -> string = "caml_extunix_tzname"
  external posix_openpt : Unix.open_flag list -> Unix.file_descr
    = "caml_extunix_posix_openpt"
  external grantpt : Unix.file_descr -> unit = "caml_extunix_grantpt"
  external unlockpt : Unix.file_descr -> unit = "caml_extunix_unlockpt"
  external ptsname : Unix.file_descr -> string = "caml_extunix_ptsname"
  external backtrace : unit -> string array = "caml_extunix_backtrace"
  external setenv : string -> string -> bool -> unit = "caml_extunix_setenv"
  external unsetenv : string -> unit = "caml_extunix_unsetenv"
  external clearenv : unit -> unit = "caml_extunix_clearenv"
  external mkdtemp : string -> string = "caml_extunix_mkdtemp"
  val have : string -> bool option
end