github.com/razvanm/vanadium-go-1.3@v0.0.0-20160721203343-4a65068e5915/src/runtime/os_solaris.go (about) 1 // Copyright 2014 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 package runtime 6 7 import "unsafe" 8 9 func setitimer(mode int32, new, old unsafe.Pointer) 10 func sigaction(sig int32, new, old unsafe.Pointer) 11 func sigaltstack(new, old unsafe.Pointer) 12 func sigprocmask(mode int32, new, old unsafe.Pointer) 13 func sysctl(mib *uint32, miblen uint32, out *byte, size *uintptr, dst *byte, ndst uintptr) int32 14 func getrlimit(kind int32, limit unsafe.Pointer) 15 func miniterrno(fn unsafe.Pointer) 16 func raise(sig int32) 17 func getcontext(ctxt unsafe.Pointer) 18 func tstart_sysvicall(mm unsafe.Pointer) uint32 19 func nanotime1() int64 20 func usleep1(usec uint32) 21 func osyield1() 22 func netpollinit() 23 func netpollopen(fd uintptr, pd *pollDesc) int32 24 func netpollclose(fd uintptr) int32 25 func netpollarm(pd *pollDesc, mode int) 26 27 type libcFunc byte 28 29 var asmsysvicall6 libcFunc 30 31 //go:nosplit 32 func sysvicall0(fn *libcFunc) uintptr { 33 libcall := &getg().m.libcall 34 libcall.fn = uintptr(unsafe.Pointer(fn)) 35 libcall.n = 0 36 // TODO(rsc): Why is noescape necessary here and below? 37 libcall.args = uintptr(noescape(unsafe.Pointer(&fn))) // it's unused but must be non-nil, otherwise crashes 38 asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall)) 39 return libcall.r1 40 } 41 42 //go:nosplit 43 func sysvicall1(fn *libcFunc, a1 uintptr) uintptr { 44 libcall := &getg().m.libcall 45 libcall.fn = uintptr(unsafe.Pointer(fn)) 46 libcall.n = 1 47 libcall.args = uintptr(noescape(unsafe.Pointer(&a1))) 48 asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall)) 49 return libcall.r1 50 } 51 52 //go:nosplit 53 func sysvicall2(fn *libcFunc, a1, a2 uintptr) uintptr { 54 libcall := &getg().m.libcall 55 libcall.fn = uintptr(unsafe.Pointer(fn)) 56 libcall.n = 2 57 libcall.args = uintptr(noescape(unsafe.Pointer(&a1))) 58 asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall)) 59 return libcall.r1 60 } 61 62 //go:nosplit 63 func sysvicall3(fn *libcFunc, a1, a2, a3 uintptr) uintptr { 64 libcall := &getg().m.libcall 65 libcall.fn = uintptr(unsafe.Pointer(fn)) 66 libcall.n = 3 67 libcall.args = uintptr(noescape(unsafe.Pointer(&a1))) 68 asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall)) 69 return libcall.r1 70 } 71 72 //go:nosplit 73 func sysvicall4(fn *libcFunc, a1, a2, a3, a4 uintptr) uintptr { 74 libcall := &getg().m.libcall 75 libcall.fn = uintptr(unsafe.Pointer(fn)) 76 libcall.n = 4 77 libcall.args = uintptr(noescape(unsafe.Pointer(&a1))) 78 asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall)) 79 return libcall.r1 80 } 81 82 //go:nosplit 83 func sysvicall5(fn *libcFunc, a1, a2, a3, a4, a5 uintptr) uintptr { 84 libcall := &getg().m.libcall 85 libcall.fn = uintptr(unsafe.Pointer(fn)) 86 libcall.n = 5 87 libcall.args = uintptr(noescape(unsafe.Pointer(&a1))) 88 asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall)) 89 return libcall.r1 90 } 91 92 //go:nosplit 93 func sysvicall6(fn *libcFunc, a1, a2, a3, a4, a5, a6 uintptr) uintptr { 94 libcall := &getg().m.libcall 95 libcall.fn = uintptr(unsafe.Pointer(fn)) 96 libcall.n = 6 97 libcall.args = uintptr(noescape(unsafe.Pointer(&a1))) 98 asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall)) 99 return libcall.r1 100 }