diff options
Diffstat (limited to 'src/runtime/syscall_solaris.go')
-rw-r--r-- | src/runtime/syscall_solaris.go | 79 |
1 files changed, 38 insertions, 41 deletions
diff --git a/src/runtime/syscall_solaris.go b/src/runtime/syscall_solaris.go index 50d3a1d36..9b9971674 100644 --- a/src/runtime/syscall_solaris.go +++ b/src/runtime/syscall_solaris.go @@ -9,12 +9,10 @@ import "unsafe" var ( libc_chdir, libc_chroot, - libc_close, libc_dlopen, libc_dlclose, libc_dlsym, libc_execve, - libc_exit, libc_fcntl, libc_forkx, libc_gethostname, @@ -27,7 +25,6 @@ var ( libc_setpgid, libc_syscall, libc_wait4, - libc_write, pipe1 libcFunc ) @@ -38,9 +35,9 @@ func syscall_sysvicall6(fn, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err n: nargs, args: uintptr(unsafe.Pointer(&a1)), } - entersyscallblock() + entersyscallblock(0) asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call)) - exitsyscall() + exitsyscall(0) return call.r1, call.r2, call.err } @@ -62,7 +59,7 @@ func syscall_rawsysvicall6(fn, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, e //go:nosplit func syscall_chdir(path uintptr) (err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_chdir)), + fn: uintptr(unsafe.Pointer(libc_chdir)), n: 1, args: uintptr(unsafe.Pointer(&path)), } @@ -73,7 +70,7 @@ func syscall_chdir(path uintptr) (err uintptr) { //go:nosplit func syscall_chroot(path uintptr) (err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_chroot)), + fn: uintptr(unsafe.Pointer(libc_chroot)), n: 1, args: uintptr(unsafe.Pointer(&path)), } @@ -84,18 +81,18 @@ func syscall_chroot(path uintptr) (err uintptr) { // like close, but must not split stack, for forkx. //go:nosplit func syscall_close(fd int32) int32 { - return int32(sysvicall1(&libc_close, uintptr(fd))) + return int32(sysvicall1(libc_close, uintptr(fd))) } func syscall_dlopen(name *byte, mode uintptr) (handle uintptr, err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_dlopen)), + fn: uintptr(unsafe.Pointer(libc_dlopen)), n: 2, args: uintptr(unsafe.Pointer(&name)), } - entersyscallblock() + entersyscallblock(0) asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call)) - exitsyscall() + exitsyscall(0) if call.r1 == 0 { return call.r1, call.err } @@ -104,25 +101,25 @@ func syscall_dlopen(name *byte, mode uintptr) (handle uintptr, err uintptr) { func syscall_dlclose(handle uintptr) (err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_dlclose)), + fn: uintptr(unsafe.Pointer(libc_dlclose)), n: 1, args: uintptr(unsafe.Pointer(&handle)), } - entersyscallblock() + entersyscallblock(0) asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call)) - exitsyscall() + exitsyscall(0) return call.r1 } func syscall_dlsym(handle uintptr, name *byte) (proc uintptr, err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_dlsym)), + fn: uintptr(unsafe.Pointer(libc_dlsym)), n: 2, args: uintptr(unsafe.Pointer(&handle)), } - entersyscallblock() + entersyscallblock(0) asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call)) - exitsyscall() + exitsyscall(0) if call.r1 == 0 { return call.r1, call.err } @@ -132,7 +129,7 @@ func syscall_dlsym(handle uintptr, name *byte) (proc uintptr, err uintptr) { //go:nosplit func syscall_execve(path, argv, envp uintptr) (err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_execve)), + fn: uintptr(unsafe.Pointer(libc_execve)), n: 3, args: uintptr(unsafe.Pointer(&path)), } @@ -143,13 +140,13 @@ func syscall_execve(path, argv, envp uintptr) (err uintptr) { // like exit, but must not split stack, for forkx. //go:nosplit func syscall_exit(code uintptr) { - sysvicall1(&libc_exit, code) + sysvicall1(libc_exit, code) } //go:nosplit func syscall_fcntl(fd, cmd, arg uintptr) (val, err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_fcntl)), + fn: uintptr(unsafe.Pointer(libc_fcntl)), n: 3, args: uintptr(unsafe.Pointer(&fd)), } @@ -160,7 +157,7 @@ func syscall_fcntl(fd, cmd, arg uintptr) (val, err uintptr) { //go:nosplit func syscall_forkx(flags uintptr) (pid uintptr, err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_forkx)), + fn: uintptr(unsafe.Pointer(libc_forkx)), n: 1, args: uintptr(unsafe.Pointer(&flags)), } @@ -172,13 +169,13 @@ func syscall_gethostname() (name string, err uintptr) { cname := new([_MAXHOSTNAMELEN]byte) var args = [2]uintptr{uintptr(unsafe.Pointer(&cname[0])), _MAXHOSTNAMELEN} call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_gethostname)), + fn: uintptr(unsafe.Pointer(libc_gethostname)), n: 2, args: uintptr(unsafe.Pointer(&args[0])), } - entersyscallblock() + entersyscallblock(0) asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call)) - exitsyscall() + exitsyscall(0) if call.r1 != 0 { return "", call.err } @@ -189,7 +186,7 @@ func syscall_gethostname() (name string, err uintptr) { //go:nosplit func syscall_ioctl(fd, req, arg uintptr) (err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_ioctl)), + fn: uintptr(unsafe.Pointer(libc_ioctl)), n: 3, args: uintptr(unsafe.Pointer(&fd)), } @@ -203,9 +200,9 @@ func syscall_pipe() (r, w, err uintptr) { n: 0, args: uintptr(unsafe.Pointer(&pipe1)), // it's unused but must be non-nil, otherwise crashes } - entersyscallblock() + entersyscallblock(0) asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call)) - exitsyscall() + exitsyscall(0) return call.r1, call.r2, call.err } @@ -217,7 +214,7 @@ func syscall_pipe() (r, w, err uintptr) { // TODO(aram): make this panic once we stop calling fcntl(2) in net using it. func syscall_rawsyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_syscall)), + fn: uintptr(unsafe.Pointer(libc_syscall)), n: 4, args: uintptr(unsafe.Pointer(&trap)), } @@ -228,7 +225,7 @@ func syscall_rawsyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) { //go:nosplit func syscall_setgid(gid uintptr) (err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_setgid)), + fn: uintptr(unsafe.Pointer(libc_setgid)), n: 1, args: uintptr(unsafe.Pointer(&gid)), } @@ -239,7 +236,7 @@ func syscall_setgid(gid uintptr) (err uintptr) { //go:nosplit func syscall_setgroups(ngid, gid uintptr) (err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_setgroups)), + fn: uintptr(unsafe.Pointer(libc_setgroups)), n: 2, args: uintptr(unsafe.Pointer(&ngid)), } @@ -250,9 +247,9 @@ func syscall_setgroups(ngid, gid uintptr) (err uintptr) { //go:nosplit func syscall_setsid() (pid, err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_setsid)), + fn: uintptr(unsafe.Pointer(libc_setsid)), n: 0, - args: uintptr(unsafe.Pointer(&libc_setsid)), // it's unused but must be non-nil, otherwise crashes + args: uintptr(unsafe.Pointer(libc_setsid)), // it's unused but must be non-nil, otherwise crashes } asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call)) return call.r1, call.err @@ -261,7 +258,7 @@ func syscall_setsid() (pid, err uintptr) { //go:nosplit func syscall_setuid(uid uintptr) (err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_setuid)), + fn: uintptr(unsafe.Pointer(libc_setuid)), n: 1, args: uintptr(unsafe.Pointer(&uid)), } @@ -272,7 +269,7 @@ func syscall_setuid(uid uintptr) (err uintptr) { //go:nosplit func syscall_setpgid(pid, pgid uintptr) (err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_setpgid)), + fn: uintptr(unsafe.Pointer(libc_setpgid)), n: 2, args: uintptr(unsafe.Pointer(&pid)), } @@ -288,32 +285,32 @@ func syscall_setpgid(pid, pgid uintptr) (err uintptr) { // TODO(aram): make this panic once we stop calling fcntl(2) in net using it. func syscall_syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_syscall)), + fn: uintptr(unsafe.Pointer(libc_syscall)), n: 4, args: uintptr(unsafe.Pointer(&trap)), } - entersyscallblock() + entersyscallblock(0) asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call)) - exitsyscall() + exitsyscall(0) return call.r1, call.r2, call.err } func syscall_wait4(pid uintptr, wstatus *uint32, options uintptr, rusage unsafe.Pointer) (wpid int, err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_wait4)), + fn: uintptr(unsafe.Pointer(libc_wait4)), n: 4, args: uintptr(unsafe.Pointer(&pid)), } - entersyscallblock() + entersyscallblock(0) asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call)) - exitsyscall() + exitsyscall(0) return int(call.r1), call.err } //go:nosplit func syscall_write(fd, buf, nbyte uintptr) (n, err uintptr) { call := libcall{ - fn: uintptr(unsafe.Pointer(&libc_write)), + fn: uintptr(unsafe.Pointer(libc_write)), n: 3, args: uintptr(unsafe.Pointer(&fd)), } |