2021-12-20 08:08:08 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"math"
|
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
|
|
"github.com/jaypipes/ghw"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
cpu, err := ghw.CPU()
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Printf("Error getting CPU info: %v", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fmt.Printf("%v\n", cpu)
|
|
|
|
|
|
2021-12-21 08:22:49 +00:00
|
|
|
fmt.Println(cpu.JSONString(true))
|
|
|
|
|
|
2021-12-20 08:08:08 +00:00
|
|
|
for _, proc := range cpu.Processors {
|
|
|
|
|
fmt.Printf(" %v\n", proc)
|
|
|
|
|
for _, core := range proc.Cores {
|
|
|
|
|
fmt.Printf(" %v\n", core)
|
|
|
|
|
}
|
|
|
|
|
if len(proc.Capabilities) > 0 {
|
|
|
|
|
// pretty-print the (large) block of capability strings into rows
|
|
|
|
|
// of 6 capability strings
|
|
|
|
|
rows := int(math.Ceil(float64(len(proc.Capabilities)) / float64(6)))
|
|
|
|
|
for row := 1; row < rows; row = row + 1 {
|
|
|
|
|
rowStart := (row * 6) - 1
|
|
|
|
|
rowEnd := int(math.Min(float64(rowStart+6), float64(len(proc.Capabilities))))
|
|
|
|
|
rowElems := proc.Capabilities[rowStart:rowEnd]
|
|
|
|
|
capStr := strings.Join(rowElems, " ")
|
|
|
|
|
if row == 1 {
|
|
|
|
|
fmt.Printf(" capabilities: [%s\n", capStr)
|
|
|
|
|
} else if rowEnd < len(proc.Capabilities) {
|
|
|
|
|
fmt.Printf(" %s\n", capStr)
|
|
|
|
|
} else {
|
|
|
|
|
fmt.Printf(" %s]\n", capStr)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|