1// Copyright 2020 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5//go:build openbsd && !mips64
6
7package runtime
8
9import (
10	"internal/abi"
11	"unsafe"
12)
13
14//go:nosplit
15//go:cgo_unsafe_args
16func thrsleep(ident uintptr, clock_id int32, tsp *timespec, lock uintptr, abort *uint32) int32 {
17	ret := libcCall(unsafe.Pointer(abi.FuncPCABI0(thrsleep_trampoline)), unsafe.Pointer(&ident))
18	KeepAlive(tsp)
19	KeepAlive(abort)
20	return ret
21}
22func thrsleep_trampoline()
23
24//go:nosplit
25//go:cgo_unsafe_args
26func thrwakeup(ident uintptr, n int32) int32 {
27	return libcCall(unsafe.Pointer(abi.FuncPCABI0(thrwakeup_trampoline)), unsafe.Pointer(&ident))
28}
29func thrwakeup_trampoline()
30
31//go:nosplit
32func osyield() {
33	libcCall(unsafe.Pointer(abi.FuncPCABI0(sched_yield_trampoline)), unsafe.Pointer(nil))
34}
35func sched_yield_trampoline()
36
37//go:nosplit
38func osyield_no_g() {
39	asmcgocall_no_g(unsafe.Pointer(abi.FuncPCABI0(sched_yield_trampoline)), unsafe.Pointer(nil))
40}
41
42//go:cgo_import_dynamic libc_thrsleep __thrsleep "libc.so"
43//go:cgo_import_dynamic libc_thrwakeup __thrwakeup "libc.so"
44//go:cgo_import_dynamic libc_sched_yield sched_yield "libc.so"
45
46//go:cgo_import_dynamic _ _ "libc.so"
47