package unix
import
const minIovec = 8
func ( []Iovec, [][]byte) []Iovec {
for , := range {
var Iovec
.SetLen(len())
if len() > 0 {
.Base = &[0]
} else {
.Base = (*byte)(unsafe.Pointer(&_zero))
}
= append(, )
}
return
}
func ( []Iovec, int) {
if !raceenabled {
return
}
for := 0; > 0 && < len(); ++ {
:= min(int([].Len), )
-=
if > 0 {
raceReadRange(unsafe.Pointer([].Base), )
}
}
}
func ( []Iovec, int, error) {
if !raceenabled {
return
}
for := 0; > 0 && < len(); ++ {
:= min(int([].Len), )
-=
if > 0 {
raceWriteRange(unsafe.Pointer([].Base), )
}
}
if == nil {
raceAcquire(unsafe.Pointer(&ioSync))
}
}
func ( int, [][]byte) ( int, error) {
:= make([]Iovec, 0, minIovec)
= appendBytes(, )
, = readv(, )
readvRaceDetect(, , )
return ,
}
func ( int, [][]byte, int64) ( int, error) {
:= make([]Iovec, 0, minIovec)
= appendBytes(, )
, = preadv(, , )
readvRaceDetect(, , )
return ,
}
func ( int, [][]byte) ( int, error) {
:= make([]Iovec, 0, minIovec)
= appendBytes(, )
if raceenabled {
raceReleaseMerge(unsafe.Pointer(&ioSync))
}
, = writev(, )
writevRaceDetect(, )
return ,
}
func ( int, [][]byte, int64) ( int, error) {
:= make([]Iovec, 0, minIovec)
= appendBytes(, )
if raceenabled {
raceReleaseMerge(unsafe.Pointer(&ioSync))
}
, = pwritev(, , )
writevRaceDetect(, )
return ,
}