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 :
    sig
      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
    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