Source file src/cmd/dist/sys_windows.go

     1  // Copyright 2015 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 main
     6  
     7  import (
     8  	"syscall"
     9  	"unsafe"
    10  )
    11  
    12  var (
    13  	modkernel32       = syscall.NewLazyDLL("kernel32.dll")
    14  	procGetSystemInfo = modkernel32.NewProc("GetSystemInfo")
    15  )
    16  
    17  // see https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/ns-sysinfoapi-system_info
    18  type systeminfo struct {
    19  	wProcessorArchitecture      uint16
    20  	wReserved                   uint16
    21  	dwPageSize                  uint32
    22  	lpMinimumApplicationAddress uintptr
    23  	lpMaximumApplicationAddress uintptr
    24  	dwActiveProcessorMask       uintptr
    25  	dwNumberOfProcessors        uint32
    26  	dwProcessorType             uint32
    27  	dwAllocationGranularity     uint32
    28  	wProcessorLevel             uint16
    29  	wProcessorRevision          uint16
    30  }
    31  
    32  // See https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/ns-sysinfoapi-system_info
    33  const (
    34  	PROCESSOR_ARCHITECTURE_AMD64 = 9
    35  	PROCESSOR_ARCHITECTURE_INTEL = 0
    36  	PROCESSOR_ARCHITECTURE_ARM   = 5
    37  	PROCESSOR_ARCHITECTURE_ARM64 = 12
    38  	PROCESSOR_ARCHITECTURE_IA64  = 6
    39  )
    40  
    41  var sysinfo systeminfo
    42  
    43  func sysinit() {
    44  	syscall.Syscall(procGetSystemInfo.Addr(), 1, uintptr(unsafe.Pointer(&sysinfo)), 0, 0)
    45  	switch sysinfo.wProcessorArchitecture {
    46  	case PROCESSOR_ARCHITECTURE_AMD64:
    47  		gohostarch = "amd64"
    48  	case PROCESSOR_ARCHITECTURE_INTEL:
    49  		gohostarch = "386"
    50  	case PROCESSOR_ARCHITECTURE_ARM:
    51  		gohostarch = "arm"
    52  	case PROCESSOR_ARCHITECTURE_ARM64:
    53  		gohostarch = "arm64"
    54  	default:
    55  		fatalf("unknown processor architecture")
    56  	}
    57  }
    58  

View as plain text