mirror of
https://github.com/golang/go
synced 2024-11-20 06:44:40 -07:00
e629cd0f88
Fixes #10450 runtime.cputicks is called from runtime.exitsyscall and must not split the stack. cputicks is implemented in several ways and the NOSPLIT annotation was missing from a few of these. Change-Id: I5cbbb4e5888c5d298fe2fef240782d0e49f59af8 Reviewed-on: https://go-review.googlesource.com/8939 Reviewed-by: Aram Hăvărneanu <aram@mgk.ro>
21 lines
569 B
Go
21 lines
569 B
Go
// Copyright 2015 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
|
|
|
|
const (
|
|
_AT_NULL = 0
|
|
_AT_RANDOM = 25 // introduced in 2.6.29
|
|
)
|
|
|
|
var randomNumber uint32
|
|
|
|
//go:nosplit
|
|
func cputicks() int64 {
|
|
// Currently cputicks() is used in blocking profiler and to seed fastrand1().
|
|
// nanotime() is a poor approximation of CPU ticks that is enough for the profiler.
|
|
// randomNumber provides better seeding of fastrand1.
|
|
return nanotime() + int64(randomNumber)
|
|
}
|