|
package xsysinfo |
|
|
|
import ( |
|
"sort" |
|
|
|
"github.com/jaypipes/ghw" |
|
"github.com/klauspost/cpuid/v2" |
|
) |
|
|
|
func CPUCapabilities() ([]string, error) { |
|
cpu, err := ghw.CPU() |
|
if err != nil { |
|
return nil, err |
|
} |
|
|
|
caps := map[string]struct{}{} |
|
|
|
for _, proc := range cpu.Processors { |
|
for _, c := range proc.Capabilities { |
|
|
|
caps[c] = struct{}{} |
|
} |
|
|
|
} |
|
|
|
ret := []string{} |
|
for c := range caps { |
|
ret = append(ret, c) |
|
} |
|
|
|
|
|
sort.Strings(ret) |
|
return ret, nil |
|
} |
|
|
|
func HasCPUCaps(ids ...cpuid.FeatureID) bool { |
|
return cpuid.CPU.Supports(ids...) |
|
} |
|
|
|
func CPUPhysicalCores() int { |
|
if cpuid.CPU.PhysicalCores == 0 { |
|
return 1 |
|
} |
|
return cpuid.CPU.PhysicalCores |
|
} |
|
|