1 // Copyright 2018 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 dragonfly || freebsd || linux || netbsd || (openbsd && mips64)
6 7 package poll
8 9 import (
10 "syscall"
11 "unsafe"
12 )
13 14 func writev(fd int, iovecs []syscall.Iovec) (uintptr, error) {
15 var (
16 r uintptr
17 e syscall.Errno
18 )
19 for {
20 r, _, e = syscall.Syscall(syscall.SYS_WRITEV, uintptr(fd), uintptr(unsafe.Pointer(&iovecs[0])), uintptr(len(iovecs)))
21 if e != syscall.EINTR {
22 break
23 }
24 }
25 if e != 0 {
26 return r, e
27 }
28 return r, nil
29 }
30