}
/* count size of all instancess of the "name" */
-size_t lscpu_get_cache_full_size(struct lscpu_cxt *cxt, const char *name)
+size_t lscpu_get_cache_full_size(struct lscpu_cxt *cxt, const char *name, int *instances)
{
size_t i, sz = 0;
+ if (instances)
+ *instances = 0;
+
for (i = 0; i < cxt->ncaches; i++) {
- if (strcmp(cxt->caches[i].name, name) == 0)
+ if (strcmp(cxt->caches[i].name, name) == 0) {
sz += cxt->caches[i].size;
+ if (instances)
+ (*instances)++;
+ }
}
return sz;
}
lscpu_sort_caches(cxt->caches, cxt->ncaches);
- DBG(GATHER, ul_debugobj(cxt, " L1d: %zu", lscpu_get_cache_full_size(cxt, "L1d")));
- DBG(GATHER, ul_debugobj(cxt, " L1i: %zu", lscpu_get_cache_full_size(cxt, "L1i")));
- DBG(GATHER, ul_debugobj(cxt, " L2: %zu", lscpu_get_cache_full_size(cxt, "L2")));
- DBG(GATHER, ul_debugobj(cxt, " L3: %zu", lscpu_get_cache_full_size(cxt, "L3")));
+ DBG(GATHER, ul_debugobj(cxt, " L1d: %zu", lscpu_get_cache_full_size(cxt, "L1d", NULL)));
+ DBG(GATHER, ul_debugobj(cxt, " L1i: %zu", lscpu_get_cache_full_size(cxt, "L1i", NULL)));
+ DBG(GATHER, ul_debugobj(cxt, " L2: %zu", lscpu_get_cache_full_size(cxt, "L2", NULL)));
+ DBG(GATHER, ul_debugobj(cxt, " L3: %zu", lscpu_get_cache_full_size(cxt, "L3", NULL)));
return rc;
}
{
uint64_t sz = 0;
if (ca->name)
- sz = lscpu_get_cache_full_size(cxt, ca->name);
+ sz = lscpu_get_cache_full_size(cxt, ca->name, NULL);
if (!sz)
break;
if (cxt->bytes)
for (i = 0; i < cxt->ncaches; i++) {
const char *name = cxt->caches[i].name;
uint64_t sz;
+ int n = 0;
if (last && strcmp(last, name) == 0)
continue;
- sz = lscpu_get_cache_full_size(cxt, name);
+ sz = lscpu_get_cache_full_size(cxt, name, &n);
if (!sz)
continue;
snprintf(field, sizeof(field), is_term ? _("%s:") : _("%s cache:"), name);
if (cxt->bytes)
- add_summary_x(tb, sec, field, "%" PRIu64, sz);
+ add_summary_sprint(tb, sec, field,
+ P_("%" PRIu64 " (%d instance)",
+ "%" PRIu64 " (%d instances)", n),
+ sz, n);
else {
char *tmp = size_to_human_string(
SIZE_SUFFIX_3LETTER |
SIZE_SUFFIX_SPACE,
sz);
- add_summary_s(tb, sec, field, tmp);
+ add_summary_sprint(tb, sec, field,
+ P_("%s (%d instance)",
+ "%s (%d instances)", n),
+ tmp, n);
free(tmp);
}
last = name;
void lscpu_free_caches(struct lscpu_cache *caches, size_t n);
void lscpu_sort_caches(struct lscpu_cache *caches, size_t n);
-size_t lscpu_get_cache_full_size(struct lscpu_cxt *cxt, const char *name);
+size_t lscpu_get_cache_full_size(struct lscpu_cxt *cxt, const char *name, int *instances);
struct lscpu_cache *lscpu_cpu_get_cache(struct lscpu_cxt *cxt,
struct lscpu_cpu *cpu, const char *name);