blob: cf0db576b80babeb0f92da1d892bd0e5f102f6b0 [file] [log] [blame]
// Copyright 2014 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.
// Export guts for testing.
package runtime
import "unsafe"
const MaxArgs = maxArgs
var (
OsYield = osyield
TimeBeginPeriodRetValue = &timeBeginPeriodRetValue
)
func NumberOfProcessors() int32 {
var info systeminfo
stdcall1(_GetSystemInfo, uintptr(unsafe.Pointer(&info)))
return int32(info.dwnumberofprocessors)
}
type ContextStub struct {
context
}
func (c ContextStub) GetPC() uintptr {
return c.ip()
}
func NewContextStub() *ContextStub {
var ctx context
ctx.set_ip(getcallerpc())
ctx.set_sp(getcallersp())
fp := getfp()
// getfp is not implemented on windows/386 and windows/arm,
// in which case it returns 0.
if fp != 0 {
ctx.set_fp(*(*uintptr)(unsafe.Pointer(fp)))
}
return &ContextStub{ctx}
}