free(ct->flags);
free(ct->mtid); /* maximum thread id (s390) */
free(ct->addrsz); /* address sizes */
+ free(ct->static_mhz);
+ free(ct->dynamic_mhz);
free(ct);
}
}
DBG(GATHER, ul_debug("*** cpu data before cpu ID"));
else
strdup_to_offset(pr->curr_cpu, pattern->offset, value);
+
+ if (pattern->id == PAT_MHZ_DYNAMIC && pr->curr_type && !pr->curr_type->dynamic_mhz)
+ pr->curr_type->dynamic_mhz = xstrdup(value);
+ if (pattern->id == PAT_MHZ_STATIC && pr->curr_type && !pr->curr_type->static_mhz)
+ pr->curr_type->static_mhz = xstrdup(value);
break;
case CPUINFO_LINE_CPUTYPE:
if (pr->curr_type && is_different_cputype(pr->curr_type, pattern->offset, value)) {
size_t nbooks_per_drawer;
size_t ndrawers_per_system;
+ char *dynamic_mhz; /* s390; copy from the first CPU */
+ char *static_mhz; /* s390; copy from the first CPU */
+
/* siblings maps */
size_t ncores;
cpu_set_t **coremaps;
size_t ndrawers;
cpu_set_t **drawermaps;
- unsigned int has_freq;
+ unsigned int has_freq : 1; /* has max/nim frequence info */
};
/* dispatching modes */