comparison vendor/golang.org/x/sys/unix/syscall_aix.go @ 68:4b79810863f6 draft

Ready to release 0.6.0 Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Wed, 13 Sep 2023 10:49:50 +0000
parents 787b5ee0289d
children
comparison
equal deleted inserted replaced
67:4edfa07d5fe0 68:4b79810863f6
216 } 216 }
217 return 217 return
218 } 218 }
219 219
220 func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { 220 func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {
221 // Recvmsg not implemented on AIX 221 var msg Msghdr
222 return -1, -1, -1, ENOSYS 222 msg.Name = (*byte)(unsafe.Pointer(rsa))
223 msg.Namelen = uint32(SizeofSockaddrAny)
224 var dummy byte
225 if len(oob) > 0 {
226 // receive at least one normal byte
227 if emptyIovecs(iov) {
228 var iova [1]Iovec
229 iova[0].Base = &dummy
230 iova[0].SetLen(1)
231 iov = iova[:]
232 }
233 msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
234 msg.SetControllen(len(oob))
235 }
236 if len(iov) > 0 {
237 msg.Iov = &iov[0]
238 msg.SetIovlen(len(iov))
239 }
240 if n, err = recvmsg(fd, &msg, flags); n == -1 {
241 return
242 }
243 oobn = int(msg.Controllen)
244 recvflags = int(msg.Flags)
245 return
223 } 246 }
224 247
225 func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { 248 func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {
226 // SendmsgN not implemented on AIX 249 var msg Msghdr
227 return -1, ENOSYS 250 msg.Name = (*byte)(unsafe.Pointer(ptr))
251 msg.Namelen = uint32(salen)
252 var dummy byte
253 var empty bool
254 if len(oob) > 0 {
255 // send at least one normal byte
256 empty = emptyIovecs(iov)
257 if empty {
258 var iova [1]Iovec
259 iova[0].Base = &dummy
260 iova[0].SetLen(1)
261 iov = iova[:]
262 }
263 msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
264 msg.SetControllen(len(oob))
265 }
266 if len(iov) > 0 {
267 msg.Iov = &iov[0]
268 msg.SetIovlen(len(iov))
269 }
270 if n, err = sendmsg(fd, &msg, flags); err != nil {
271 return 0, err
272 }
273 if len(oob) > 0 && empty {
274 n = 0
275 }
276 return n, nil
228 } 277 }
229 278
230 func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { 279 func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
231 switch rsa.Addr.Family { 280 switch rsa.Addr.Family {
232 281