diff --git a/src/runtime/runtime.go b/src/runtime/runtime.go index 137a41a4..5ac66633 100644 --- a/src/runtime/runtime.go +++ b/src/runtime/runtime.go @@ -115,3 +115,8 @@ func sliceCopy(dst, src unsafe.Pointer, dstLen, srcLen lenType, elemSize uintptr memmove(dst, src, uintptr(n)*elemSize) return n } + +//go:linkname sleep time.Sleep +func sleep(d int64) { + sleepTicks(timeUnit(d / tickMicros)) +} diff --git a/src/runtime/runtime_avr.go b/src/runtime/runtime_avr.go index 73f33190..20ceea04 100644 --- a/src/runtime/runtime_avr.go +++ b/src/runtime/runtime_avr.go @@ -68,15 +68,10 @@ func putchar(c byte) { *avr.UDR0 = avr.RegValue(c) // send char } -// Sleep by the given amount. +// Sleep this number of ticks of 16ms. // // TODO: not very accurate. Improve accuracy by calibrating on startup and every // once in a while. -//go:linkname sleep time.Sleep -func sleep(d int64) { - sleepTicks(timeUnit(d / tickMicros)) -} - func sleepTicks(d timeUnit) { currentTime += d for d != 0 { diff --git a/src/runtime/runtime_nrf.go b/src/runtime/runtime_nrf.go index 31134887..bca187e8 100644 --- a/src/runtime/runtime_nrf.go +++ b/src/runtime/runtime_nrf.go @@ -91,11 +91,6 @@ func putchar(c byte) { nrf.UART0.EVENTS_TXDRDY = 0 } -//go:linkname sleep time.Sleep -func sleep(d timeUnit) { - sleepTicks(d / tickMicros) -} - func sleepTicks(d timeUnit) { for d != 0 { ticks() // update timestamp diff --git a/src/runtime/runtime_unix.go b/src/runtime/runtime_unix.go index 64c0ba3c..396d731e 100644 --- a/src/runtime/runtime_unix.go +++ b/src/runtime/runtime_unix.go @@ -34,13 +34,8 @@ func putchar(c byte) { _Cfunc_putchar(int(c)) } -//go:linkname sleep time.Sleep -func sleep(d int64) { - _Cfunc_usleep(uint(d) / 1000) -} - func sleepTicks(d timeUnit) { - sleep(int64(d)) + _Cfunc_usleep(uint(d) / 1000) } // Return monotonic time in nanoseconds.