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