mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-27 16:21:03 +08:00
This is a step toward updating libgo to 1.13. This adds the 1.13 version of the osinit function to Go code, and removes the corresponding code from the C runtime. This should simplify future updates. Some additional 1.13 code was brought in to simplify this change. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/191717 From-SVN: r275010
46 lines
883 B
Go
46 lines
883 B
Go
// Copyright 2011 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 runtime
|
|
|
|
import _ "unsafe"
|
|
|
|
var executablePath string
|
|
|
|
//extern getexecname
|
|
func getexecname() *byte
|
|
|
|
//extern getpagesize
|
|
func getPageSize() int32
|
|
|
|
//extern sysconf
|
|
func sysconf(int32) _C_long
|
|
|
|
func getncpu() int32 {
|
|
n := int32(sysconf(__SC_NPROCESSORS_ONLN))
|
|
if n < 1 {
|
|
return 1
|
|
}
|
|
return n
|
|
}
|
|
|
|
func osinit() {
|
|
ncpu = getncpu()
|
|
if physPageSize == 0 {
|
|
physPageSize = uintptr(getPageSize())
|
|
}
|
|
}
|
|
|
|
func sysargs(argc int32, argv **byte) {
|
|
executablePath = gostringnocopy(getexecname())
|
|
}
|
|
|
|
//go:linkname solarisExecutablePath os.solarisExecutablePath
|
|
|
|
// solarisExecutablePath is called from the os package to fetch the
|
|
// saved executable path.
|
|
func solarisExecutablePath() string {
|
|
return executablePath
|
|
}
|