| // Copyright 2020 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Package sysinfo implements high level hardware information gathering |
| // that can be used for debugging or information purposes. |
| package sysinfo |
| |
| import ( |
| internalcpu "internal/cpu" |
| "sync" |
| ) |
| |
| type cpuInfo struct { |
| once sync.Once |
| name string |
| } |
| |
| var CPU cpuInfo |
| |
| func (cpu *cpuInfo) Name() string { |
| cpu.once.Do(func() { |
| // Try to get the information from internal/cpu. |
| if name := internalcpu.Name(); name != "" { |
| cpu.name = name |
| return |
| } |
| // TODO(martisch): use /proc/cpuinfo and /sys/devices/system/cpu/ on Linux as fallback. |
| }) |
| return cpu.name |
| } |