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