23 lines
552 B
Go
23 lines
552 B
Go
|
// Copyright 2016 The Periph Authors. All rights reserved.
|
||
|
// Use of this source code is governed under the Apache License, Version 2.0
|
||
|
// that can be found in the LICENSE file.
|
||
|
|
||
|
package cpu
|
||
|
|
||
|
import (
|
||
|
"syscall"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
const isLinux = true
|
||
|
|
||
|
func nanospinLinux(d time.Duration) {
|
||
|
// runtime.nanotime() is not exported so it cannot be used to busy loop for
|
||
|
// very short sleep (10µs or less).
|
||
|
time := syscall.NsecToTimespec(d.Nanoseconds())
|
||
|
leftover := syscall.Timespec{}
|
||
|
for syscall.Nanosleep(&time, &leftover) != nil {
|
||
|
time = leftover
|
||
|
}
|
||
|
}
|