With the patch we can get some basic machine state information,
crash> mach
                MACHINE TYPE: riscv64
                 MEMORY SIZE: 1 GB
                        CPUS: 1
             PROCESSOR SPEED: (unknown)
                          HZ: 250
                   PAGE SIZE: 4096
           KERNEL STACK SIZE: 16384

Signed-off-by: Xianting Tian <xianting.t...@linux.alibaba.com>
---
 riscv64.c | 45 ++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 44 insertions(+), 1 deletion(-)

diff --git a/riscv64.c b/riscv64.c
index 475dc98..cbf75cf 100644
--- a/riscv64.c
+++ b/riscv64.c
@@ -139,10 +139,53 @@ static int riscv64_get_struct_page_max_shift(struct 
machine_specific *ms)
        return (int)ceil(log2(ms->struct_page_size));
 }
 
+/*
+ * "mach" command output.
+ */
+static void
+riscv64_display_machine_stats(void)
+{
+       struct new_utsname *uts;
+       char buf[BUFSIZE];
+       ulong mhz;
+
+       uts = &kt->utsname;
+
+       fprintf(fp, "           MACHINE TYPE: %s\n", uts->machine);
+       fprintf(fp, "            MEMORY SIZE: %s\n", get_memory_size(buf));
+       fprintf(fp, "                   CPUS: %d\n", get_cpus_to_display());
+       fprintf(fp, "        PROCESSOR SPEED: ");
+       if ((mhz = machdep->processor_speed()))
+               fprintf(fp, "%ld Mhz\n", mhz);
+       else
+               fprintf(fp, "(unknown)\n");
+       fprintf(fp, "                     HZ: %d\n", machdep->hz);
+       fprintf(fp, "              PAGE SIZE: %d\n", PAGESIZE());
+       fprintf(fp, "      KERNEL STACK SIZE: %ld\n", STACKSIZE());
+}
+
 static void
 riscv64_cmd_mach(void)
 {
-       /* TODO: */
+       int c;
+
+       while ((c = getopt(argcnt, args, "cmo")) != EOF) {
+               switch (c) {
+               case 'c':
+               case 'm':
+               case 'o':
+                       option_not_supported(c);
+                       break;
+               default:
+                       argerrs++;
+                       break;
+               }
+       }
+
+       if (argerrs)
+               cmd_usage(pc->curcmd, SYNOPSIS);
+
+       riscv64_display_machine_stats();
 }
 
 static int
-- 
2.17.1

--
Crash-utility mailing list
Crash-utility@redhat.com
https://listman.redhat.com/mailman/listinfo/crash-utility
Contribution Guidelines: https://github.com/crash-utility/crash/wiki

Reply via email to