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// +build dragonfly freebsd linux netbsd openbsd
6
7package poll
8
9import (
10	"syscall"
11	"unsafe"
12)
13
14func 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