github.com/sandwichdev/go-internals@v0.0.0-20210605002614-12311ac6b2c5/sysinfo/sysinfo.go (about)

     1  // Copyright 2020 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // Package sysinfo implements high level hardware information gathering
     6  // that can be used for debugging or information purposes.
     7  package sysinfo
     8  
     9  import (
    10  	"sync"
    11  
    12  	internalcpu "github.com/SandwichDev/go-internals/cpu"
    13  )
    14  
    15  type cpuInfo struct {
    16  	once sync.Once
    17  	name string
    18  }
    19  
    20  var CPU cpuInfo
    21  
    22  func (cpu *cpuInfo) Name() string {
    23  	cpu.once.Do(func() {
    24  		// Try to get the information from internal/cpu.
    25  		if name := internalcpu.Name(); name != "" {
    26  			cpu.name = name
    27  			return
    28  		}
    29  		// TODO(martisch): use /proc/cpuinfo and /sys/devices/system/cpu/ on Linux as fallback.
    30  	})
    31  	return cpu.name
    32  }