mirror of https://go.googlesource.com/go
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
// Copyright 2020 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.
|
|
|
|
//go:build openbsd && !mips64
|
|
|
|
package runtime
|
|
|
|
import (
|
|
"internal/abi"
|
|
"unsafe"
|
|
)
|
|
|
|
//go:nosplit
|
|
//go:cgo_unsafe_args
|
|
func thrsleep(ident uintptr, clock_id int32, tsp *timespec, lock uintptr, abort *uint32) int32 {
|
|
ret := libcCall(unsafe.Pointer(abi.FuncPCABI0(thrsleep_trampoline)), unsafe.Pointer(&ident))
|
|
KeepAlive(tsp)
|
|
KeepAlive(abort)
|
|
return ret
|
|
}
|
|
func thrsleep_trampoline()
|
|
|
|
//go:nosplit
|
|
//go:cgo_unsafe_args
|
|
func thrwakeup(ident uintptr, n int32) int32 {
|
|
return libcCall(unsafe.Pointer(abi.FuncPCABI0(thrwakeup_trampoline)), unsafe.Pointer(&ident))
|
|
}
|
|
func thrwakeup_trampoline()
|
|
|
|
//go:nosplit
|
|
func osyield() {
|
|
libcCall(unsafe.Pointer(abi.FuncPCABI0(sched_yield_trampoline)), unsafe.Pointer(nil))
|
|
}
|
|
func sched_yield_trampoline()
|
|
|
|
//go:nosplit
|
|
func osyield_no_g() {
|
|
asmcgocall_no_g(unsafe.Pointer(abi.FuncPCABI0(sched_yield_trampoline)), unsafe.Pointer(nil))
|
|
}
|
|
|
|
//go:cgo_import_dynamic libc_thrsleep __thrsleep "libc.so"
|
|
//go:cgo_import_dynamic libc_thrwakeup __thrwakeup "libc.so"
|
|
//go:cgo_import_dynamic libc_sched_yield sched_yield "libc.so"
|
|
|
|
//go:cgo_import_dynamic _ _ "libc.so"
|