mirror of
https://github.com/golang/go
synced 2024-11-18 14:54:40 -07:00
runtime: parse auxv for page size on dragonfly
Decode AT_PAGESZ to determine physPageSize on dragonfly. Change-Id: I7236d7cbe43433f16dffddad19c1655bc0c7f31d Reviewed-on: https://go-review.googlesource.com/103257 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
04e993f953
commit
9364c13d09
@ -4,6 +4,7 @@
|
||||
|
||||
// +build !linux
|
||||
// +build !darwin
|
||||
// +build !dragonfly
|
||||
// +build !freebsd
|
||||
// +build !netbsd
|
||||
|
||||
|
@ -4,7 +4,10 @@
|
||||
|
||||
package runtime
|
||||
|
||||
import "unsafe"
|
||||
import (
|
||||
"runtime/internal/sys"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
const (
|
||||
_NSIG = 33
|
||||
@ -149,7 +152,9 @@ func newosproc(mp *m, stk unsafe.Pointer) {
|
||||
|
||||
func osinit() {
|
||||
ncpu = getncpu()
|
||||
physPageSize = getPageSize()
|
||||
if physPageSize == 0 {
|
||||
physPageSize = getPageSize()
|
||||
}
|
||||
}
|
||||
|
||||
var urandom_dev = []byte("/dev/urandom\x00")
|
||||
@ -242,3 +247,33 @@ func sigdelset(mask *sigset, i int) {
|
||||
|
||||
func (c *sigctxt) fixsigcode(sig uint32) {
|
||||
}
|
||||
|
||||
func sysargs(argc int32, argv **byte) {
|
||||
n := argc + 1
|
||||
|
||||
// skip over argv, envp to get to auxv
|
||||
for argv_index(argv, n) != nil {
|
||||
n++
|
||||
}
|
||||
|
||||
// skip NULL separator
|
||||
n++
|
||||
|
||||
auxv := (*[1 << 28]uintptr)(add(unsafe.Pointer(argv), uintptr(n)*sys.PtrSize))
|
||||
sysauxv(auxv[:])
|
||||
}
|
||||
|
||||
const (
|
||||
_AT_NULL = 0
|
||||
_AT_PAGESZ = 6
|
||||
)
|
||||
|
||||
func sysauxv(auxv []uintptr) {
|
||||
for i := 0; auxv[i] != _AT_NULL; i += 2 {
|
||||
tag, val := auxv[i], auxv[i+1]
|
||||
switch tag {
|
||||
case _AT_PAGESZ:
|
||||
physPageSize = val
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user