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) } // order 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 }