From e9d659ea8578c5a7175e9200868fc5da8148fbe7 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Fri, 9 Sep 2011 08:19:24 +0200 Subject: lscpu: use function to search in cpu masks arrays Signed-off-by: Karel Zak --- sys-utils/lscpu.c | 57 ++++++++++++++++++++----------------------------------- 1 file changed, 21 insertions(+), 36 deletions(-) (limited to 'sys-utils/lscpu.c') diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c index 68a40d575..bd2c073a9 100644 --- a/sys-utils/lscpu.c +++ b/sys-utils/lscpu.c @@ -885,70 +885,55 @@ read_nodes(struct lscpu_desc *desc) } static void -print_parsable_cell(struct lscpu_desc *desc, int i, int col, +print_parsable_cell(struct lscpu_desc *desc, int cpu, int col, struct lscpu_modifier *mod) { - int j; size_t setsize = CPU_ALLOC_SIZE(maxcpus); + size_t idx; + int j; switch (col) { case COL_CPU: - printf("%d", i); + printf("%d", cpu); break; case COL_CORE: - for (j = 0; j < desc->ncores; j++) { - if (CPU_ISSET_S(i, setsize, desc->coremaps[j])) { - printf("%d", j); - break; - } - } + if (cpuset_ary_isset(cpu, desc->coremaps, + desc->ncores, setsize, &idx) == 0) + printf("%zd", idx); break; case COL_SOCKET: - for (j = 0; j < desc->nsockets; j++) { - if (CPU_ISSET_S(i, setsize, desc->socketmaps[j])) { - printf("%d", j); - break; - } - } + if (cpuset_ary_isset(cpu, desc->socketmaps, + desc->nsockets, setsize, &idx) == 0) + printf("%zd", idx); break; case COL_NODE: - for (j = 0; j < desc->nnodes; j++) { - if (CPU_ISSET_S(i, setsize, desc->nodemaps[j])) { - printf("%d", j); - break; - } - } + if (cpuset_ary_isset(cpu, desc->nodemaps, + desc->nnodes, setsize, &idx) == 0) + printf("%zd", idx); break; case COL_BOOK: - for (j = 0; j < desc->nbooks; j++) { - if (CPU_ISSET_S(i, setsize, desc->bookmaps[j])) { - printf("%d", j); - break; - } - } + if (cpuset_ary_isset(cpu, desc->bookmaps, + desc->nbooks, setsize, &idx) == 0) + printf("%zd", idx); break; case COL_CACHE: for (j = desc->ncaches - 1; j >= 0; j--) { struct cpu_cache *ca = &desc->caches[j]; - int x; - for (x = 0; x < ca->nsharedmaps; x++) { - if (CPU_ISSET_S(i, setsize, ca->sharedmaps[x])) { - printf("%d", x); - break; - } - } + if (cpuset_ary_isset(cpu, ca->sharedmaps, + ca->nsharedmaps, setsize, &idx) == 0) + printf("%zd", idx); if (j != 0) putchar(mod->compat ? ',' : ':'); } break; case COL_POLARIZATION: if (desc->polarization) - printf("%s", polar_modes[desc->polarization[i]].parsable); + printf("%s", polar_modes[desc->polarization[cpu]].parsable); break; case COL_ADDRESS: if (desc->addresses) - printf("%d", desc->addresses[i]); + printf("%d", desc->addresses[cpu]); break; } } -- cgit v1.2.3-55-g7522