]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lscpu: add --bytes
authorKarel Zak <kzak@redhat.com>
Tue, 19 Mar 2019 13:21:02 +0000 (14:21 +0100)
committerKarel Zak <kzak@redhat.com>
Tue, 19 Mar 2019 13:29:40 +0000 (14:29 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
sys-utils/lscpu.1
sys-utils/lscpu.c

index 22675bf869176ee36381f9931541610404a0ef25..25e8b1e1eaed12b81aea5a264656c1892f211cb0 100644 (file)
@@ -102,6 +102,9 @@ Minimum megahertz value for the CPU.
 Include lines for online and offline CPUs in the output (default for \fB-e\fR).
 This option may only be specified together with option \fB-e\fR or \fB-p\fR.
 .TP
+.BR \-B , " \-\-bytes"
+Print the sizes in bytes rather than in a human-readable format.
+.TP
 .BR \-b , " \-\-online"
 Limit the output to online CPUs (default for \fB-p\fR).
 This option may only be specified together with option \fB-e\fR or \fB-p\fR.
index 6bd31b758e6fa5b78426a68525a903a8d40316b5..bc9fe82fc5a6b1ed2356ca267c8a67f74a399239 100644 (file)
@@ -2039,14 +2039,19 @@ print_summary(struct lscpu_desc *desc, struct lscpu_modifier *mod)
                for (i = desc->ncaches - 1; i >= 0; i--) {
                        uint64_t sz = 0;
                        char *tmp;
+                       struct cpu_cache *ca = &desc->caches[i];
 
-                       if (get_cache_full_size(desc, &desc->caches[i], &sz) != 0 || sz == 0)
+                       if (ca->size == 0)
                                continue;
-                       tmp = size_to_human_string(
+                       if (get_cache_full_size(desc, ca, &sz) != 0 || sz == 0)
+                               continue;
+                       if (mod->bytes)
+                               xasprintf(&tmp, "%" PRIu64, sz);
+                       else
+                               tmp = size_to_human_string(
                                        SIZE_SUFFIX_3LETTER | SIZE_SUFFIX_SPACE,
                                        sz);
-                       snprintf(buf, sizeof(buf),
-                                       _("%s cache: "), desc->caches[i].name);
+                       snprintf(buf, sizeof(buf), _("%s cache: "), ca->name);
                        add_summary_s(tb, buf, tmp);
                        free(tmp);
                }
@@ -2054,14 +2059,17 @@ print_summary(struct lscpu_desc *desc, struct lscpu_modifier *mod)
        if (desc->necaches) {
                for (i = desc->necaches - 1; i >= 0; i--) {
                        char *tmp;
+                       struct cpu_cache *ca = &desc->ecaches[i];
 
-                       if (desc->ecaches[i].size == 0)
+                       if (ca->size == 0)
                                continue;
-                       tmp = size_to_human_string(
+                       if (mod->bytes)
+                               xasprintf(&tmp, "%" PRIu64, ca->size);
+                       else
+                               tmp = size_to_human_string(
                                        SIZE_SUFFIX_3LETTER | SIZE_SUFFIX_SPACE,
-                                       desc->ecaches[i].size);
-                       snprintf(buf, sizeof(buf),
-                                       _("%s cache: "), desc->ecaches[i].name);
+                                       ca->size);
+                       snprintf(buf, sizeof(buf), _("%s cache: "), ca->name);
                        add_summary_s(tb, buf, tmp);
                        free(tmp);
                }
@@ -2099,6 +2107,7 @@ static void __attribute__((__noreturn__)) usage(void)
        fputs(USAGE_OPTIONS, out);
        fputs(_(" -a, --all               print both online and offline CPUs (default for -e)\n"), out);
        fputs(_(" -b, --online            print online CPUs only (default for -p)\n"), out);
+       fputs(_(" -B, --bytes             print sizes in bytes rather than in human readable format\n"), out);
        fputs(_(" -C, --caches[=<list>]   info about caches in extended readable format\n"), out);
        fputs(_(" -c, --offline           print offline CPUs only\n"), out);
        fputs(_(" -J, --json              use JSON for default or extended format\n"), out);
@@ -2138,6 +2147,7 @@ int main(int argc, char *argv[])
        static const struct option longopts[] = {
                { "all",        no_argument,       NULL, 'a' },
                { "online",     no_argument,       NULL, 'b' },
+               { "bytes",      no_argument,       NULL, 'B' },
                { "caches",     optional_argument, NULL, 'C' },
                { "offline",    no_argument,       NULL, 'c' },
                { "help",       no_argument,       NULL, 'h' },
@@ -2164,7 +2174,7 @@ int main(int argc, char *argv[])
        textdomain(PACKAGE);
        atexit(close_stdout);
 
-       while ((c = getopt_long(argc, argv, "abC::ce::hJp::s:xyV", longopts, NULL)) != -1) {
+       while ((c = getopt_long(argc, argv, "aBbC::ce::hJp::s:xyV", longopts, NULL)) != -1) {
 
                err_exclusive_options(c, longopts, excl, excl_st);
 
@@ -2173,6 +2183,9 @@ int main(int argc, char *argv[])
                        mod->online = mod->offline = 1;
                        cpu_modifier_specified = 1;
                        break;
+               case 'B':
+                       mod->bytes = 1;
+                       break;
                case 'b':
                        mod->online = 1;
                        cpu_modifier_specified = 1;