mirror of
https://github.com/golang/go
synced 2024-11-06 13:46:16 -07:00
744ccbb852
Use AT_TIMEKEEP ELF aux entry to access a kernel mapped ring of timehands structs. The timehands are updated by the kernel periodically, but for accurate measure the timecounter still needs to be queried. Currently the fast path is used only when kern.timecounter.hardware==TSC-low or kern.timecounter.hardware=='ARM MPCore Timecounter', other timecounters revert back to regular system call. TODO: add support for HPET timecounter on 386/amd64. Change-Id: I321ca4e92be63ba21a2574b758ef5c1e729086ad Reviewed-on: https://go-review.googlesource.com/93156 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
22 lines
454 B
Go
22 lines
454 B
Go
// Copyright 2018 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 (
|
|
_VDSO_TH_ALGO_ARM_GENTIM = 1
|
|
)
|
|
|
|
func getCntxct(physical bool) uint32
|
|
|
|
//go:nosplit
|
|
func (th *vdsoTimehands) getTimecounter() (uint32, bool) {
|
|
switch th.algo {
|
|
case _VDSO_TH_ALGO_ARM_GENTIM:
|
|
return getCntxct(th.physical != 0), true
|
|
default:
|
|
return 0, false
|
|
}
|
|
}
|