Mercurial > yakumo_izuru > aya
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 |