Files
scrutiny/vendor/github.com/jaypipes/ghw/cpu_windows.go
T
2020-08-21 06:31:48 +00:00

56 lines
1.5 KiB
Go

// +build !linux
// Use and distribution licensed under the Apache license version 2.
//
// See the COPYING file in the root project directory for full text.
//
package ghw
import (
"github.com/StackExchange/wmi"
)
const wmqlProcessor = "SELECT Manufacturer, Name, NumberOfLogicalProcessors, NumberOfCores FROM Win32_Processor"
type win32Processor struct {
Manufacturer *string
Name *string
NumberOfLogicalProcessors uint32
NumberOfCores uint32
}
func (ctx *context) cpuFillInfo(info *CPUInfo) error {
// Getting info from WMI
var win32descriptions []win32Processor
if err := wmi.Query(wmqlProcessor, &win32descriptions); err != nil {
return err
}
// Converting into standard structures
info.Processors = ctx.processorsGet(win32descriptions)
var totCores uint32
var totThreads uint32
for _, p := range info.Processors {
totCores += p.NumCores
totThreads += p.NumThreads
}
info.TotalCores = totCores
info.TotalThreads = totThreads
return nil
}
func (ctx *context) processorsGet(win32descriptions []win32Processor) []*Processor {
var procs []*Processor
// Converting into standard structures
for index, description := range win32descriptions {
p := &Processor{
Id: index, // TODO: how to get a decent "Physical ID" to use ?
Model: *description.Name,
Vendor: *description.Manufacturer,
NumCores: description.NumberOfCores,
NumThreads: description.NumberOfLogicalProcessors,
}
procs = append(procs, p)
}
return procs
}