sig
  type t = {
    utime : float;
    stime : float;
    maxrss : int64;
    ixrss : int64;
    idrss : int64;
    isrss : int64;
    minflt : int64;
    majflt : int64;
    nswap : int64;
    inblock : int64;
    oublock : int64;
    msgsnd : int64;
    msgrcv : int64;
    nsignals : int64;
    nvcsw : int64;
    nivcsw : int64;
  }
  val nivcsw : Unix.Resource_usage.t -> int64
  val nvcsw : Unix.Resource_usage.t -> int64
  val nsignals : Unix.Resource_usage.t -> int64
  val msgrcv : Unix.Resource_usage.t -> int64
  val msgsnd : Unix.Resource_usage.t -> int64
  val oublock : Unix.Resource_usage.t -> int64
  val inblock : Unix.Resource_usage.t -> int64
  val nswap : Unix.Resource_usage.t -> int64
  val majflt : Unix.Resource_usage.t -> int64
  val minflt : Unix.Resource_usage.t -> int64
  val isrss : Unix.Resource_usage.t -> int64
  val idrss : Unix.Resource_usage.t -> int64
  val ixrss : Unix.Resource_usage.t -> int64
  val maxrss : Unix.Resource_usage.t -> int64
  val stime : Unix.Resource_usage.t -> float
  val utime : Unix.Resource_usage.t -> float
  module Fields :
    sig
      val names : string list
      val nivcsw : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val nvcsw : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val nsignals : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val msgrcv : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val msgsnd : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val oublock : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val inblock : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val nswap : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val majflt : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val minflt : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val isrss : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val idrss : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val ixrss : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val maxrss : (Unix.Resource_usage.t, int64) Fieldslib.Field.t
      val stime : (Unix.Resource_usage.t, float) Fieldslib.Field.t
      val utime : (Unix.Resource_usage.t, float) Fieldslib.Field.t
      val fold :
        init:'acc__ ->
        utime:('acc__ ->
               (Unix.Resource_usage.t, float) Fieldslib.Field.t ->
               'acc__) ->
        stime:('acc__ ->
               (Unix.Resource_usage.t, float) Fieldslib.Field.t ->
               'acc__) ->
        maxrss:('acc__ ->
                (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'acc__) ->
        ixrss:('acc__ ->
               (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'acc__) ->
        idrss:('acc__ ->
               (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'acc__) ->
        isrss:('acc__ ->
               (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'acc__) ->
        minflt:('acc__ ->
                (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'acc__) ->
        majflt:('acc__ ->
                (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'acc__) ->
        nswap:('acc__ ->
               (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'acc__) ->
        inblock:('acc__ ->
                 (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 'acc__) ->
        oublock:('acc__ ->
                 (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 'acc__) ->
        msgsnd:('acc__ ->
                (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'acc__) ->
        msgrcv:('acc__ ->
                (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'acc__) ->
        nsignals:('acc__ ->
                  (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                  'acc__) ->
        nvcsw:('acc__ ->
               (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'acc__) ->
        nivcsw:('acc__ ->
                (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'acc__) ->
        'acc__
      val make_creator :
        utime:((Unix.Resource_usage.t, float) Fieldslib.Field.t ->
               'compile_acc__ -> ('input__ -> float) * 'compile_acc__) ->
        stime:((Unix.Resource_usage.t, float) Fieldslib.Field.t ->
               'compile_acc__ -> ('input__ -> float) * 'compile_acc__) ->
        maxrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        ixrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        idrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        isrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        minflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        majflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        nswap:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        inblock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        oublock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        msgsnd:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        msgrcv:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        nsignals:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                  'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        nvcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        nivcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'compile_acc__ -> ('input__ -> int64) * 'compile_acc__) ->
        'compile_acc__ ->
        ('input__ -> Unix.Resource_usage.t) * 'compile_acc__
      val create :
        utime:float ->
        stime:float ->
        maxrss:int64 ->
        ixrss:int64 ->
        idrss:int64 ->
        isrss:int64 ->
        minflt:int64 ->
        majflt:int64 ->
        nswap:int64 ->
        inblock:int64 ->
        oublock:int64 ->
        msgsnd:int64 ->
        msgrcv:int64 ->
        nsignals:int64 ->
        nvcsw:int64 -> nivcsw:int64 -> Unix.Resource_usage.t
      val iter :
        utime:((Unix.Resource_usage.t, float) Fieldslib.Field.t -> unit) ->
        stime:((Unix.Resource_usage.t, float) Fieldslib.Field.t -> unit) ->
        maxrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> unit) ->
        ixrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> unit) ->
        idrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> unit) ->
        isrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> unit) ->
        minflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> unit) ->
        majflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> unit) ->
        nswap:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> unit) ->
        inblock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 unit) ->
        oublock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 unit) ->
        msgsnd:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> unit) ->
        msgrcv:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> unit) ->
        nsignals:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                  unit) ->
        nvcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> unit) ->
        nivcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> unit) ->
        unit
      val map :
        utime:((Unix.Resource_usage.t, float) Fieldslib.Field.t -> float) ->
        stime:((Unix.Resource_usage.t, float) Fieldslib.Field.t -> float) ->
        maxrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                int64) ->
        ixrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> int64) ->
        idrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> int64) ->
        isrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> int64) ->
        minflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                int64) ->
        majflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                int64) ->
        nswap:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> int64) ->
        inblock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 int64) ->
        oublock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 int64) ->
        msgsnd:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                int64) ->
        msgrcv:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                int64) ->
        nsignals:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                  int64) ->
        nvcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> int64) ->
        nivcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                int64) ->
        Unix.Resource_usage.t
      val map_poly :
        (Unix.Resource_usage.t, 'x0) Fieldslib.Field.user -> 'x0 list
      val for_all :
        utime:((Unix.Resource_usage.t, float) Fieldslib.Field.t -> bool) ->
        stime:((Unix.Resource_usage.t, float) Fieldslib.Field.t -> bool) ->
        maxrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        ixrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        idrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        isrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        minflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        majflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        nswap:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        inblock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 bool) ->
        oublock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 bool) ->
        msgsnd:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        msgrcv:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        nsignals:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                  bool) ->
        nvcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        nivcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        bool
      val exists :
        utime:((Unix.Resource_usage.t, float) Fieldslib.Field.t -> bool) ->
        stime:((Unix.Resource_usage.t, float) Fieldslib.Field.t -> bool) ->
        maxrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        ixrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        idrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        isrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        minflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        majflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        nswap:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        inblock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 bool) ->
        oublock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 bool) ->
        msgsnd:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        msgrcv:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        nsignals:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                  bool) ->
        nvcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        nivcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t -> bool) ->
        bool
      val to_list :
        utime:((Unix.Resource_usage.t, float) Fieldslib.Field.t ->
               'elem__) ->
        stime:((Unix.Resource_usage.t, float) Fieldslib.Field.t ->
               'elem__) ->
        maxrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'elem__) ->
        ixrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'elem__) ->
        idrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'elem__) ->
        isrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'elem__) ->
        minflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'elem__) ->
        majflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'elem__) ->
        nswap:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'elem__) ->
        inblock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 'elem__) ->
        oublock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                 'elem__) ->
        msgsnd:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'elem__) ->
        msgrcv:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'elem__) ->
        nsignals:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                  'elem__) ->
        nvcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
               'elem__) ->
        nivcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                'elem__) ->
        'elem__ list
      module Direct :
        sig
          val iter :
            Unix.Resource_usage.t ->
            utime:((Unix.Resource_usage.t, float) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> float -> unit) ->
            stime:((Unix.Resource_usage.t, float) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> float -> unit) ->
            maxrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                    Unix.Resource_usage.t -> int64 -> unit) ->
            ixrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> int64 -> unit) ->
            idrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> int64 -> unit) ->
            isrss:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> int64 -> unit) ->
            minflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                    Unix.Resource_usage.t -> int64 -> unit) ->
            majflt:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                    Unix.Resource_usage.t -> int64 -> unit) ->
            nswap:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> int64 -> unit) ->
            inblock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                     Unix.Resource_usage.t -> int64 -> unit) ->
            oublock:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                     Unix.Resource_usage.t -> int64 -> unit) ->
            msgsnd:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                    Unix.Resource_usage.t -> int64 -> unit) ->
            msgrcv:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                    Unix.Resource_usage.t -> int64 -> unit) ->
            nsignals:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                      Unix.Resource_usage.t -> int64 -> unit) ->
            nvcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> int64 -> unit) ->
            nivcsw:((Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                    Unix.Resource_usage.t -> int64 -> unit) ->
            unit
          val fold :
            Unix.Resource_usage.t ->
            init:'acc__ ->
            utime:('acc__ ->
                   (Unix.Resource_usage.t, float) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> float -> 'acc__) ->
            stime:('acc__ ->
                   (Unix.Resource_usage.t, float) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> float -> 'acc__) ->
            maxrss:('acc__ ->
                    (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                    Unix.Resource_usage.t -> int64 -> 'acc__) ->
            ixrss:('acc__ ->
                   (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> int64 -> 'acc__) ->
            idrss:('acc__ ->
                   (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> int64 -> 'acc__) ->
            isrss:('acc__ ->
                   (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> int64 -> 'acc__) ->
            minflt:('acc__ ->
                    (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                    Unix.Resource_usage.t -> int64 -> 'acc__) ->
            majflt:('acc__ ->
                    (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                    Unix.Resource_usage.t -> int64 -> 'acc__) ->
            nswap:('acc__ ->
                   (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> int64 -> 'acc__) ->
            inblock:('acc__ ->
                     (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                     Unix.Resource_usage.t -> int64 -> 'acc__) ->
            oublock:('acc__ ->
                     (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                     Unix.Resource_usage.t -> int64 -> 'acc__) ->
            msgsnd:('acc__ ->
                    (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                    Unix.Resource_usage.t -> int64 -> 'acc__) ->
            msgrcv:('acc__ ->
                    (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                    Unix.Resource_usage.t -> int64 -> 'acc__) ->
            nsignals:('acc__ ->
                      (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                      Unix.Resource_usage.t -> int64 -> 'acc__) ->
            nvcsw:('acc__ ->
                   (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                   Unix.Resource_usage.t -> int64 -> 'acc__) ->
            nivcsw:('acc__ ->
                    (Unix.Resource_usage.t, int64) Fieldslib.Field.t ->
                    Unix.Resource_usage.t -> int64 -> 'acc__) ->
            'acc__
        end
    end
  val get : [ `Children | `Self ] -> Unix.Resource_usage.t
  val add :
    Unix.Resource_usage.t ->
    Unix.Resource_usage.t -> Unix.Resource_usage.t
  val t_of_sexp : Sexplib.Sexp.t -> Unix.Resource_usage.t
  val sexp_of_t : Unix.Resource_usage.t -> Sexplib.Sexp.t
end