sig
  type index_t = All | Number of int
  type cpu_t = {
    user : Procfs.bigint;
    nice : Procfs.bigint;
    sys : Procfs.bigint;
    idle : Procfs.bigint;
    iowait : Procfs.bigint option;
    irq : Procfs.bigint option;
    softirq : Procfs.bigint option;
    steal : Procfs.bigint option;
    guest : Procfs.bigint option;
  }
  val guest : Procfs.Kstat.cpu_t -> Procfs.bigint option
  val steal : Procfs.Kstat.cpu_t -> Procfs.bigint option
  val softirq : Procfs.Kstat.cpu_t -> Procfs.bigint option
  val irq : Procfs.Kstat.cpu_t -> Procfs.bigint option
  val iowait : Procfs.Kstat.cpu_t -> Procfs.bigint option
  val idle : Procfs.Kstat.cpu_t -> Procfs.bigint
  val sys : Procfs.Kstat.cpu_t -> Procfs.bigint
  val nice : Procfs.Kstat.cpu_t -> Procfs.bigint
  val user : Procfs.Kstat.cpu_t -> Procfs.bigint
  module Fields_of_cpu_t :
    sig
      val names : string list
      val guest :
        (Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t
      val steal :
        (Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t
      val softirq :
        (Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t
      val irq : (Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t
      val iowait :
        (Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t
      val idle : (Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t
      val sys : (Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t
      val nice : (Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t
      val user : (Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t
      val fold :
        init:'acc__ ->
        user:('acc__ ->
              (Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> 'acc__) ->
        nice:('acc__ ->
              (Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> 'acc__) ->
        sys:('acc__ ->
             (Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> 'acc__) ->
        idle:('acc__ ->
              (Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> 'acc__) ->
        iowait:('acc__ ->
                (Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                'acc__) ->
        irq:('acc__ ->
             (Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
             'acc__) ->
        softirq:('acc__ ->
                 (Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                 'acc__) ->
        steal:('acc__ ->
               (Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               'acc__) ->
        guest:('acc__ ->
               (Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               'acc__) ->
        'acc__
      val make_creator :
        user:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
              'compile_acc__ -> ('input__ -> Procfs.bigint) * 'compile_acc__) ->
        nice:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
              'compile_acc__ -> ('input__ -> Procfs.bigint) * 'compile_acc__) ->
        sys:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
             'compile_acc__ -> ('input__ -> Procfs.bigint) * 'compile_acc__) ->
        idle:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
              'compile_acc__ -> ('input__ -> Procfs.bigint) * 'compile_acc__) ->
        iowait:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                'compile_acc__ ->
                ('input__ -> Procfs.bigint option) * 'compile_acc__) ->
        irq:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
             'compile_acc__ ->
             ('input__ -> Procfs.bigint option) * 'compile_acc__) ->
        softirq:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                 'compile_acc__ ->
                 ('input__ -> Procfs.bigint option) * 'compile_acc__) ->
        steal:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               'compile_acc__ ->
               ('input__ -> Procfs.bigint option) * 'compile_acc__) ->
        guest:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               'compile_acc__ ->
               ('input__ -> Procfs.bigint option) * 'compile_acc__) ->
        'compile_acc__ -> ('input__ -> Procfs.Kstat.cpu_t) * 'compile_acc__
      val create :
        user:Procfs.bigint ->
        nice:Procfs.bigint ->
        sys:Procfs.bigint ->
        idle:Procfs.bigint ->
        iowait:Procfs.bigint option ->
        irq:Procfs.bigint option ->
        softirq:Procfs.bigint option ->
        steal:Procfs.bigint option ->
        guest:Procfs.bigint option -> Procfs.Kstat.cpu_t
      val map :
        user:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
              Procfs.bigint) ->
        nice:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
              Procfs.bigint) ->
        sys:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
             Procfs.bigint) ->
        idle:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
              Procfs.bigint) ->
        iowait:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                Procfs.bigint option) ->
        irq:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
             Procfs.bigint option) ->
        softirq:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                 Procfs.bigint option) ->
        steal:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               Procfs.bigint option) ->
        guest:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               Procfs.bigint option) ->
        Procfs.Kstat.cpu_t
      val iter :
        user:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> unit) ->
        nice:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> unit) ->
        sys:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> unit) ->
        idle:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> unit) ->
        iowait:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                unit) ->
        irq:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
             unit) ->
        softirq:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                 unit) ->
        steal:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               unit) ->
        guest:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               unit) ->
        unit
      val for_all :
        user:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> bool) ->
        nice:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> bool) ->
        sys:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> bool) ->
        idle:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> bool) ->
        iowait:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                bool) ->
        irq:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
             bool) ->
        softirq:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                 bool) ->
        steal:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               bool) ->
        guest:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               bool) ->
        bool
      val exists :
        user:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> bool) ->
        nice:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> bool) ->
        sys:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> bool) ->
        idle:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> bool) ->
        iowait:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                bool) ->
        irq:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
             bool) ->
        softirq:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                 bool) ->
        steal:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               bool) ->
        guest:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               bool) ->
        bool
      val to_list :
        user:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
              'elem__) ->
        nice:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
              'elem__) ->
        sys:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t -> 'elem__) ->
        idle:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
              'elem__) ->
        iowait:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                'elem__) ->
        irq:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
             'elem__) ->
        softirq:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                 'elem__) ->
        steal:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               'elem__) ->
        guest:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
               'elem__) ->
        'elem__ list
      val map_poly :
        ([< `Read | `Set_and_create ], Procfs.Kstat.cpu_t, 'x0)
        Fieldslib.Field.user -> 'x0 list
      module Direct :
        sig
          val iter :
            Procfs.Kstat.cpu_t ->
            user:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
                  Procfs.Kstat.cpu_t -> Procfs.bigint -> unit) ->
            nice:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
                  Procfs.Kstat.cpu_t -> Procfs.bigint -> unit) ->
            sys:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
                 Procfs.Kstat.cpu_t -> Procfs.bigint -> unit) ->
            idle:((Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
                  Procfs.Kstat.cpu_t -> Procfs.bigint -> unit) ->
            iowait:((Procfs.Kstat.cpu_t, Procfs.bigint option)
                    Fieldslib.Field.t ->
                    Procfs.Kstat.cpu_t -> Procfs.bigint option -> unit) ->
            irq:((Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                 Procfs.Kstat.cpu_t -> Procfs.bigint option -> unit) ->
            softirq:((Procfs.Kstat.cpu_t, Procfs.bigint option)
                     Fieldslib.Field.t ->
                     Procfs.Kstat.cpu_t -> Procfs.bigint option -> unit) ->
            steal:((Procfs.Kstat.cpu_t, Procfs.bigint option)
                   Fieldslib.Field.t ->
                   Procfs.Kstat.cpu_t -> Procfs.bigint option -> unit) ->
            guest:((Procfs.Kstat.cpu_t, Procfs.bigint option)
                   Fieldslib.Field.t ->
                   Procfs.Kstat.cpu_t -> Procfs.bigint option -> unit) ->
            unit
          val fold :
            Procfs.Kstat.cpu_t ->
            init:'acc__ ->
            user:('acc__ ->
                  (Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
                  Procfs.Kstat.cpu_t -> Procfs.bigint -> 'acc__) ->
            nice:('acc__ ->
                  (Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
                  Procfs.Kstat.cpu_t -> Procfs.bigint -> 'acc__) ->
            sys:('acc__ ->
                 (Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
                 Procfs.Kstat.cpu_t -> Procfs.bigint -> 'acc__) ->
            idle:('acc__ ->
                  (Procfs.Kstat.cpu_t, Procfs.bigint) Fieldslib.Field.t ->
                  Procfs.Kstat.cpu_t -> Procfs.bigint -> 'acc__) ->
            iowait:('acc__ ->
                    (Procfs.Kstat.cpu_t, Procfs.bigint option)
                    Fieldslib.Field.t ->
                    Procfs.Kstat.cpu_t -> Procfs.bigint option -> 'acc__) ->
            irq:('acc__ ->
                 (Procfs.Kstat.cpu_t, Procfs.bigint option) Fieldslib.Field.t ->
                 Procfs.Kstat.cpu_t -> Procfs.bigint option -> 'acc__) ->
            softirq:('acc__ ->
                     (Procfs.Kstat.cpu_t, Procfs.bigint option)
                     Fieldslib.Field.t ->
                     Procfs.Kstat.cpu_t -> Procfs.bigint option -> 'acc__) ->
            steal:('acc__ ->
                   (Procfs.Kstat.cpu_t, Procfs.bigint option)
                   Fieldslib.Field.t ->
                   Procfs.Kstat.cpu_t -> Procfs.bigint option -> 'acc__) ->
            guest:('acc__ ->
                   (Procfs.Kstat.cpu_t, Procfs.bigint option)
                   Fieldslib.Field.t ->
                   Procfs.Kstat.cpu_t -> Procfs.bigint option -> 'acc__) ->
            'acc__
        end
    end
  type t = Procfs.Kstat.index_t * Procfs.Kstat.cpu_t
  val load_exn : unit -> Procfs.Kstat.t list
  val index_t_of_sexp : Sexplib.Sexp.t -> Procfs.Kstat.index_t
  val sexp_of_index_t : Procfs.Kstat.index_t -> Sexplib.Sexp.t
  val cpu_t_of_sexp : Sexplib.Sexp.t -> Procfs.Kstat.cpu_t
  val sexp_of_cpu_t : Procfs.Kstat.cpu_t -> Sexplib.Sexp.t
end