Преглед изворни кода

Fix CPU frequency and hardware model detection on LoongArch64 (#288)

calico-cat-3333 пре 3 недеља
родитељ
комит
738906c4ba
1 измењених фајлова са 12 додато и 8 уклоњено
  1. 12 8
      src/mod/info/hardwareinfo/sysinfo.go

+ 12 - 8
src/mod/info/hardwareinfo/sysinfo.go

@@ -8,6 +8,7 @@ import (
 	"fmt"
 	"net/http"
 	"os/exec"
+	"runtime"
 	"strconv"
 	"strings"
 
@@ -108,7 +109,7 @@ func GetUSB(w http.ResponseWriter, r *http.Request) {
 }
 
 func GetCPUInfo(w http.ResponseWriter, r *http.Request) {
-	cmdin := `cat /proc/cpuinfo | grep -m1 "model name"`
+	cmdin := `cat /proc/cpuinfo | grep -m1 "[mM]odel [nN]ame"`
 	cmd := exec.Command("bash", "-c", cmdin)
 	hardware, err := cmd.CombinedOutput()
 	if err != nil {
@@ -126,7 +127,7 @@ func GetCPUInfo(w http.ResponseWriter, r *http.Request) {
 	cmd = exec.Command("bash", "-c", cmdin)
 	speed, err := cmd.CombinedOutput()
 	if err != nil {
-		cmdin = `cat /proc/cpuinfo | grep -m1 "cpu MHz"`
+		cmdin = `cat /proc/cpuinfo | grep -m1 "[cC][pP][uU] MHz"`
 		cmd = exec.Command("bash", "-c", cmdin)
 		intelSpeed, err := cmd.CombinedOutput()
 		if err != nil {
@@ -135,13 +136,16 @@ func GetCPUInfo(w http.ResponseWriter, r *http.Request) {
 		speed = intelSpeed
 	}
 
-	cmdin = `cat /proc/cpuinfo | grep -m1 "Hardware"`
-	cmd = exec.Command("bash", "-c", cmdin)
-	cpuhardware, err := cmd.CombinedOutput()
-	if err != nil {
+	//On LoongArch, /proc/cpuinfo has a "Hardware Watchpoint" field, which is not the hardware model we need.
+	if runtime.GOARCH != "loong64" {
+		cmdin = `cat /proc/cpuinfo | grep -m1 "Hardware"`
+		cmd = exec.Command("bash", "-c", cmdin)
+		cpuhardware, err := cmd.CombinedOutput()
+		if err != nil {
 
-	} else {
-		hardware = cpuhardware
+		} else {
+			hardware = cpuhardware
+		}
 	}
 
 	//On ARM