]> Cypherpunks repositories - gostls13.git/commitdiff
internal/poll, internal/syscall/unix, syscall: move writev definition for solaris
authorTobias Klauser <tklauser@distanz.ch>
Tue, 4 Oct 2022 11:53:46 +0000 (13:53 +0200)
committerGopher Robot <gobot@golang.org>
Fri, 7 Oct 2022 16:48:38 +0000 (16:48 +0000)
Move the writev definition for solaris from package
internal/syscall/unix to package syscall. This corresponds to where
writev is defined on aix, darwin and openbsd as well and is
go:linkname'ed from internal/poll. This also allows updating the
generated wrappers more easily if needed.

Change-Id: I671ed8232d25319f8e63f549f786d77a17602148
Reviewed-on: https://go-review.googlesource.com/c/go/+/436597
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>

src/internal/poll/fd_writev_libc.go
src/internal/poll/fd_writev_solaris.go [deleted file]
src/internal/syscall/unix/writev_solaris.go [deleted file]
src/syscall/syscall_solaris.go
src/syscall/zsyscall_solaris_amd64.go

index 7d59e6b641a29ce723b334f8234e791af4451068..0a60473b3e6099a2dc4253af6055eb519548ebbd 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build aix || darwin || (openbsd && !mips64)
+//go:build aix || darwin || (openbsd && !mips64) || solaris
 
 package poll
 
diff --git a/src/internal/poll/fd_writev_solaris.go b/src/internal/poll/fd_writev_solaris.go
deleted file mode 100644 (file)
index d20f201..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-
-package poll
-
-import (
-       "internal/syscall/unix"
-       "syscall"
-)
-
-func writev(fd int, iovecs []syscall.Iovec) (uintptr, error) {
-       return unix.Writev(fd, iovecs)
-}
diff --git a/src/internal/syscall/unix/writev_solaris.go b/src/internal/syscall/unix/writev_solaris.go
deleted file mode 100644 (file)
index d4895ee..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-package unix
-
-import (
-       "syscall"
-       "unsafe"
-)
-
-//go:cgo_import_dynamic libc_writev writev "libc.so"
-
-//go:linkname procwritev libc_writev
-
-var procwritev uintptr
-
-func Writev(fd int, iovs []syscall.Iovec) (uintptr, error) {
-       var p *syscall.Iovec
-       if len(iovs) > 0 {
-               p = &iovs[0]
-       }
-       n, _, errno := syscall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(len(iovs)), 0, 0, 0)
-       if errno != 0 {
-               return 0, errno
-       }
-       return n, nil
-}
index fce0b058fcbcc8f3c8ab6bfd3a706dc2e0aebfb6..2d042acdc9811c72e735fa2e2a754469b3516e24 100644 (file)
@@ -495,6 +495,7 @@ func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags i
 //sys  socket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket
 //sysnb        socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair
 //sys  write(fd int, p []byte) (n int, err error)
+//sys  writev(fd int, iovecs []Iovec) (n uintptr, err error)
 //sys  getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.__xnet_getsockopt
 //sysnb        getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername
 //sys  getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname
index a2bbeed844915c299091d5a7707d8531e7d82127..19e5ec1fcd3643ac878e19d49ec86b39c0d9fb05 100644 (file)
@@ -85,6 +85,7 @@ import "unsafe"
 //go:cgo_import_dynamic libc___xnet_socket __xnet_socket "libsocket.so"
 //go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair "libsocket.so"
 //go:cgo_import_dynamic libc_write write "libc.so"
+//go:cgo_import_dynamic libc_writev writev "libc.so"
 //go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so"
 //go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so"
 //go:cgo_import_dynamic libc_getsockname getsockname "libsocket.so"
@@ -172,6 +173,7 @@ import "unsafe"
 //go:linkname libc___xnet_socket libc___xnet_socket
 //go:linkname libc___xnet_socketpair libc___xnet_socketpair
 //go:linkname libc_write libc_write
+//go:linkname libc_writev libc_writev
 //go:linkname libc___xnet_getsockopt libc___xnet_getsockopt
 //go:linkname libc_getpeername libc_getpeername
 //go:linkname libc_getsockname libc_getsockname
@@ -262,6 +264,7 @@ var (
        libc___xnet_socket,
        libc___xnet_socketpair,
        libc_write,
+       libc_writev,
        libc___xnet_getsockopt,
        libc_getpeername,
        libc_getsockname,
@@ -1209,6 +1212,21 @@ func write(fd int, p []byte) (n int, err error) {
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
+func writev(fd int, iovecs []Iovec) (n uintptr, err error) {
+       var _p0 *Iovec
+       if len(iovecs) > 0 {
+               _p0 = &iovecs[0]
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&libc_writev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovecs)), 0, 0, 0)
+       n = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
 func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
        _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&libc___xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
        if e1 != 0 {