| // 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 ( |
| "internal/cpu" |
| "sync" |
| ) |
| |
| var cpuInfo struct { |
| once sync.Once |
| name string |
| } |
| |
| func CPUName() string { |
| cpuInfo.once.Do(func() { |
| // Try to get the information from internal/cpu. |
| if name := cpu.Name(); name != "" { |
| cpuInfo.name = name |
| return |
| } |
| |
| // TODO(martisch): use /proc/cpuinfo and /sys/devices/system/cpu/ on Linux as fallback. |
| if name := osCpuInfoName(); name != "" { |
| cpuInfo.name = name |
| return |
| } |
| }) |
| |
| return cpuInfo.name |
| } |