summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author諏訪子 <suwako@076.moe>2024-06-18 14:44:12 +0900
committer諏訪子 <suwako@076.moe>2024-06-18 14:50:37 +0900
commit45597e432f9c683b91ed6f424ad70d96a537fb83 (patch)
tree88d79d63b73ada991148f65d97e842a315d8766d
parent794dffcfe2204a6b7d92072e7af54e6e058dcbe9 (diff)
Linux: CPUの表示の追加
-rw-r--r--src/cpu.c34
-rw-r--r--src/memory.c2
-rw-r--r--src/uptime.c2
3 files changed, 33 insertions, 5 deletions
diff --git a/src/cpu.c b/src/cpu.c
index 5cd9d3d..11eebc9 100644
--- a/src/cpu.c
+++ b/src/cpu.c
@@ -9,7 +9,7 @@ void run_cpu_command(const char *command) {
FILE *p = popen(command, "r");
if (!p) {
- fprintf(stderr, "ホストコマンドを実効に失敗: %s", command);
+ fprintf(stderr, "CPUコマンドを実効に失敗: %s", command);
return;
}
@@ -24,12 +24,40 @@ void run_cpu_command(const char *command) {
void display_cpu() {
#if defined(__NetBSD__)
run_cpu_command("sysctl -n machdep.cpu_brand | sed 's/(R)//' | "
- "sed 's/(TM)//' | sed 's/CPU //'");
+ "sed 's/(TM)//' | sed 's/CPU //' | sed 's/Processor//'");
run_cpu_command("echo \" (\" && sysctl -n hw.ncpu && echo \" core)\"");
#elif defined(__FreeBSD__) || defined(__OpenBSD__)
run_cpu_command("sysctl -n hw.model | sed 's/(R)//' | "
- "sed 's/(TM)//' | sed 's/CPU //'");
+ "sed 's/(TM)//' | sed 's/CPU //' | sed 's/Processor//'");
run_cpu_command("echo \" (\" && sysctl -n hw.ncpu && echo \" core)\"");
#elif defined(__linux__)
+ run_cpu_command("cat /proc/cpuinfo | awk -F '\\\\s*: | @' "
+ "'/model name|Hardware|Processor|^cpu model|chip type|^cpu type/ { "
+ "cpu=$2; if ($1 == \"Hardware\") exit } END { print cpu }' | "
+ "sed 's/(R)//' | sed 's/(TM)//' | sed 's/CPU //' | sed 's/ Processor//' | "
+ "sed 's/ [0-9]-Core//'");
+ printf(" @ ");
+
+ char buf[20];
+ long int val;
+ double fmt;
+ FILE *fp = fopen("/sys/devices/system/cpu/cpu0/cpufreq/bios_limit", "r");
+ if (fp == NULL) {
+ perror("失敗");
+ return;
+ }
+
+ if (fgets(buf, sizeof(buf), fp) != NULL) {
+ val = strtol(buf, NULL, 10);
+ fmt = val / 1000000.0;
+ printf("%.2f", fmt);
+ } else {
+ perror("失敗");
+ fclose(fp);
+ return;
+ }
+
+ fclose(fp);
+ run_cpu_command("echo \"GHz (\" && nproc && echo \" core)\"");
#endif
}
diff --git a/src/memory.c b/src/memory.c
index 6589da1..7fa55be 100644
--- a/src/memory.c
+++ b/src/memory.c
@@ -10,7 +10,7 @@ long long int run_mem_command(const char *command) {
FILE *p = popen(command, "r");
if (!p) {
- fprintf(stderr, "ホストコマンドを実効に失敗: %s", command);
+ fprintf(stderr, "メモリコマンドを実効に失敗: %s", command);
return 0;
}
diff --git a/src/uptime.c b/src/uptime.c
index 8198669..c9f1c8e 100644
--- a/src/uptime.c
+++ b/src/uptime.c
@@ -9,7 +9,7 @@ void run_uptime_command(const char *command) {
FILE *p = popen(command, "r");
if (!p) {
- fprintf(stderr, "ホストコマンドを実効に失敗: %s", command);
+ fprintf(stderr, "起動時間コマンドを実効に失敗: %s", command);
return;
}