| // Copyright 2017 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. | |
| // Declarations for operating systems implementing time.now | |
| // indirectly, in terms of walltime and nanotime assembly. | |
| //go:build !faketime && !windows && !(linux && amd64) && !plan9 | |
| package runtime | |
| import _ "unsafe" // for go:linkname | |
| // time_now should be an internal detail, | |
| // but widely used packages access it using linkname. | |
| // Notable members of the hall of shame include: | |
| // - gitee.com/quant1x/gox | |
| // - github.com/phuslu/log | |
| // - github.com/sethvargo/go-limiter | |
| // - github.com/ulule/limiter/v3 | |
| // | |
| // Do not remove or change the type signature. | |
| // See go.dev/issue/67401. | |
| // | |
| //go:linkname time_now time.now | |
| func time_now() (sec int64, nsec int32, mono int64) { | |
| sec, nsec = walltime() | |
| return sec, nsec, nanotime() | |
| } |