writev_unix.mx raw

   1  // Copyright 2016 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 unix
   6  
   7  package net
   8  
   9  import (
  10  	"runtime"
  11  	"syscall"
  12  )
  13  
  14  func (c *conn) writeBuffers(v *Buffers) (int64, error) {
  15  	if !c.ok() {
  16  		return 0, syscall.EINVAL
  17  	}
  18  	n, err := c.fd.writeBuffers(v)
  19  	if err != nil {
  20  		return n, &OpError{Op: "writev", Net: c.fd.net, Source: c.fd.laddr, Addr: c.fd.raddr, Err: err}
  21  	}
  22  	return n, nil
  23  }
  24  
  25  func (fd *netFD) writeBuffers(v *Buffers) (n int64, err error) {
  26  	n, err = fd.pfd.Writev((*[][]byte)(v))
  27  	runtime.KeepAlive(fd)
  28  	return n, wrapSyscallError("writev", err)
  29  }
  30