summaryrefslogtreecommitdiffstats
path: root/sys-utils/lscpu.c
diff options
context:
space:
mode:
authorKarel Zak2011-09-09 08:19:24 +0200
committerKarel Zak2011-09-09 23:27:40 +0200
commite9d659ea8578c5a7175e9200868fc5da8148fbe7 (patch)
treeb92b85fa796f232fdbe0c72fc251893c35b92a65 /sys-utils/lscpu.c
parentlscpu: cleanup output modes (diff)
downloadkernel-qcow2-util-linux-e9d659ea8578c5a7175e9200868fc5da8148fbe7.tar.gz
kernel-qcow2-util-linux-e9d659ea8578c5a7175e9200868fc5da8148fbe7.tar.xz
kernel-qcow2-util-linux-e9d659ea8578c5a7175e9200868fc5da8148fbe7.zip
lscpu: use function to search in cpu masks arrays
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'sys-utils/lscpu.c')
-rw-r--r--sys-utils/lscpu.c57
1 files changed, 21 insertions, 36 deletions
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;
}
}