lscpu: print generic part of the summary
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
eaf32c65be
commit
d8813bb378
1 changed files with 49 additions and 42 deletions
|
@ -743,6 +743,7 @@ print_cpus_readable(struct lscpu_desc *desc, int cols[], int ncols,
|
|||
scols_unref_table(table);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static void __attribute__ ((__format__(printf, 3, 4)))
|
||||
add_summary_sprint(struct libscols_table *tb,
|
||||
|
@ -770,22 +771,22 @@ static void __attribute__ ((__format__(printf, 3, 4)))
|
|||
err(EXIT_FAILURE, _("failed to add output data"));
|
||||
}
|
||||
|
||||
#define add_summary_n(tb, txt, num) add_summary_sprint(tb, txt, "%d", num)
|
||||
#define add_summary_n(tb, txt, num) add_summary_sprint(tb, txt, "%zu", num)
|
||||
#define add_summary_s(tb, txt, str) add_summary_sprint(tb, txt, "%s", str)
|
||||
|
||||
static void
|
||||
print_cpuset(struct libscols_table *tb,
|
||||
const char *key, cpu_set_t *set, int hex)
|
||||
print_cpuset(struct lscpu_cxt *cxt,
|
||||
struct libscols_table *tb,
|
||||
const char *key, cpu_set_t *set)
|
||||
{
|
||||
size_t setsize = CPU_ALLOC_SIZE(maxcpus);
|
||||
size_t setbuflen = 7 * maxcpus;
|
||||
size_t setbuflen = 7 * cxt->maxcpus;
|
||||
char setbuf[setbuflen], *p;
|
||||
|
||||
if (hex) {
|
||||
p = cpumask_create(setbuf, setbuflen, set, setsize);
|
||||
if (cxt->hex) {
|
||||
p = cpumask_create(setbuf, setbuflen, set, cxt->setsize);
|
||||
add_summary_s(tb, key, p);
|
||||
} else {
|
||||
p = cpulist_create(setbuf, setbuflen, set, setsize);
|
||||
p = cpulist_create(setbuf, setbuflen, set, cxt->setsize);
|
||||
add_summary_s(tb, key, p);
|
||||
}
|
||||
}
|
||||
|
@ -793,12 +794,11 @@ print_cpuset(struct libscols_table *tb,
|
|||
/*
|
||||
* default output
|
||||
*/
|
||||
static void
|
||||
print_summary(struct lscpu_desc *desc, struct lscpu_modifier *mod)
|
||||
static void print_summary(struct lscpu_cxt *cxt)
|
||||
{
|
||||
struct lscpu_cputype *ct;
|
||||
char buf[BUFSIZ];
|
||||
int i = 0;
|
||||
size_t setsize = CPU_ALLOC_SIZE(maxcpus);
|
||||
size_t i = 0;
|
||||
struct libscols_table *tb;
|
||||
|
||||
scols_init_debug(0);
|
||||
|
@ -808,7 +808,7 @@ print_summary(struct lscpu_desc *desc, struct lscpu_modifier *mod)
|
|||
err(EXIT_FAILURE, _("failed to allocate output table"));
|
||||
|
||||
scols_table_enable_noheadings(tb, 1);
|
||||
if (mod->json) {
|
||||
if (cxt->json) {
|
||||
scols_table_enable_json(tb, 1);
|
||||
scols_table_set_name(tb, "lscpu");
|
||||
}
|
||||
|
@ -817,15 +817,18 @@ print_summary(struct lscpu_desc *desc, struct lscpu_modifier *mod)
|
|||
scols_table_new_column(tb, "data", 0, SCOLS_FL_NOEXTREMES | SCOLS_FL_WRAP) == NULL)
|
||||
err(EXIT_FAILURE, _("failed to initialize output column"));
|
||||
|
||||
add_summary_s(tb, _("Architecture:"), desc->arch);
|
||||
if (desc->mode) {
|
||||
ct = lscpu_cputype_get_default(cxt);
|
||||
|
||||
if (cxt->arch)
|
||||
add_summary_s(tb, _("Architecture:"), cxt->arch->name);
|
||||
if (cxt->arch && (cxt->arch->bit32 || cxt->arch->bit64)) {
|
||||
char *p = buf;
|
||||
|
||||
if (desc->mode & MODE_32BIT) {
|
||||
if (cxt->arch->bit32) {
|
||||
strcpy(p, "32-bit, ");
|
||||
p += 8;
|
||||
}
|
||||
if (desc->mode & MODE_64BIT) {
|
||||
if (cxt->arch->bit64) {
|
||||
strcpy(p, "64-bit, ");
|
||||
p += 8;
|
||||
}
|
||||
|
@ -838,38 +841,42 @@ print_summary(struct lscpu_desc *desc, struct lscpu_modifier *mod)
|
|||
add_summary_s(tb, _("Byte Order:"), "Big Endian");
|
||||
#endif
|
||||
|
||||
if (desc->addrsz)
|
||||
add_summary_s(tb, _("Address sizes:"), desc->addrsz);
|
||||
add_summary_n(tb, _("CPU(s):"), cxt->npresents);
|
||||
|
||||
add_summary_n(tb, _("CPU(s):"), desc->ncpus);
|
||||
|
||||
if (desc->online)
|
||||
print_cpuset(tb, mod->hex ? _("On-line CPU(s) mask:") :
|
||||
if (cxt->online)
|
||||
print_cpuset(cxt, tb,
|
||||
cxt->hex ? _("On-line CPU(s) mask:") :
|
||||
_("On-line CPU(s) list:"),
|
||||
desc->online, mod->hex);
|
||||
cxt->online);
|
||||
|
||||
if (desc->online && CPU_COUNT_S(setsize, desc->online) != desc->ncpus) {
|
||||
if (cxt->online && cxt->nonlines != cxt->npresents) {
|
||||
cpu_set_t *set;
|
||||
|
||||
/* Linux kernel provides cpuset of off-line CPUs that contains
|
||||
* all configured CPUs (see /sys/devices/system/cpu/offline),
|
||||
* but want to print real (present in system) off-line CPUs only.
|
||||
*/
|
||||
set = cpuset_alloc(maxcpus, NULL, NULL);
|
||||
set = cpuset_alloc(cxt->maxcpus, NULL, NULL);
|
||||
if (!set)
|
||||
err(EXIT_FAILURE, _("failed to callocate cpu set"));
|
||||
CPU_ZERO_S(setsize, set);
|
||||
for (i = 0; i < desc->ncpuspos; i++) {
|
||||
int cpu = real_cpu_num(desc, i);
|
||||
if (!is_cpu_online(desc, cpu) && is_cpu_present(desc, cpu))
|
||||
CPU_SET_S(cpu, setsize, set);
|
||||
CPU_ZERO_S(cxt->setsize, set);
|
||||
for (i = 0; i < cxt->npossibles; i++) {
|
||||
struct lscpu_cpu *cpu = cxt->cpus[i];
|
||||
|
||||
if (cpu && is_cpu_present(cxt, cpu) && !is_cpu_online(cxt, cpu))
|
||||
CPU_SET_S(cpu->logical_id, cxt->setsize, set);
|
||||
}
|
||||
print_cpuset(tb, mod->hex ? _("Off-line CPU(s) mask:") :
|
||||
_("Off-line CPU(s) list:"),
|
||||
set, mod->hex);
|
||||
print_cpuset(cxt, tb,
|
||||
cxt->hex ? _("Off-line CPU(s) mask:") :
|
||||
_("Off-line CPU(s) list:"), set);
|
||||
cpuset_free(set);
|
||||
}
|
||||
|
||||
if (ct->addrsz)
|
||||
add_summary_s(tb, _("Address sizes:"), ct->addrsz);
|
||||
|
||||
#ifdef FOOOOOO
|
||||
|
||||
if (desc->nsockets) {
|
||||
int threads_per_core, cores_per_socket, sockets_per_book;
|
||||
int books_per_drawer, drawers;
|
||||
|
@ -1003,7 +1010,7 @@ print_summary(struct lscpu_desc *desc, struct lscpu_modifier *mod)
|
|||
|
||||
for (i = 0; i < desc->nnodes; i++) {
|
||||
snprintf(buf, sizeof(buf), _("NUMA node%d CPU(s):"), desc->idx2nodenum[i]);
|
||||
print_cpuset(tb, buf, desc->nodemaps[i], mod->hex);
|
||||
print_cpuset(cxt, tb, buf, desc->nodemaps[i]);
|
||||
}
|
||||
|
||||
if (desc->physsockets) {
|
||||
|
@ -1021,13 +1028,11 @@ print_summary(struct lscpu_desc *desc, struct lscpu_modifier *mod)
|
|||
|
||||
if (desc->flags)
|
||||
add_summary_s(tb, _("Flags:"), desc->flags);
|
||||
|
||||
#endif
|
||||
scols_print_table(tb);
|
||||
scols_unref_table(tb);
|
||||
}
|
||||
|
||||
#endif /* LSCPU_OLD_OUTPUT_CODE */
|
||||
|
||||
static void __attribute__((__noreturn__)) usage(void)
|
||||
{
|
||||
FILE *out = stdout;
|
||||
|
@ -1226,11 +1231,13 @@ int main(int argc, char *argv[])
|
|||
|
||||
cxt->virt = lscpu_read_virtualization(cxt);
|
||||
|
||||
#ifdef LSCPU_OLD_OUTPUT_CODE
|
||||
switch(mod->mode) {
|
||||
switch(cxt->mode) {
|
||||
case LSCPU_OUTPUT_SUMMARY:
|
||||
print_summary(desc, mod);
|
||||
print_summary(cxt);
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef LSCPU_OLD_OUTPUT_CODE
|
||||
case LSCPU_OUTPUT_CACHES:
|
||||
if (!ncolumns) {
|
||||
columns[ncolumns++] = COL_CACHE_NAME;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue