84 lines
2.0 KiB
Diff
84 lines
2.0 KiB
Diff
|
From 7a942ad69e1a4270dba89de9bff4f93cd6d87578 Mon Sep 17 00:00:00 2001
|
||
|
From: Xianting Tian <xianting.tian@linux.alibaba.com>
|
||
|
Date: Thu, 20 Oct 2022 09:50:13 +0800
|
||
|
Subject: [PATCH 58/89] RISCV64: Add 'mach' command support
|
||
|
|
||
|
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.tian@linux.alibaba.com>
|
||
|
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
|
||
|
---
|
||
|
riscv64.c | 45 ++++++++++++++++++++++++++++++++++++++++++++-
|
||
|
1 file changed, 44 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/riscv64.c b/riscv64.c
|
||
|
index 5e8c7d12227c..ff77e41b9407 100644
|
||
|
--- a/riscv64.c
|
||
|
+++ b/riscv64.c
|
||
|
@@ -116,10 +116,53 @@ static void riscv64_get_struct_page_size(struct machine_specific *ms)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
+/*
|
||
|
+ * "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.37.1
|
||
|
|