sendmmsg_linux_32.go 525 B

12345678910111213141516171819202122232425
  1. //go:build linux && (386 || amd64p32 || arm || mips || mipsle) && !android && !e2e_testing
  2. package udp
  3. import (
  4. "unsafe"
  5. "golang.org/x/sys/unix"
  6. )
  7. type linuxMmsgHdr struct {
  8. Hdr unix.Msghdr
  9. Len uint32
  10. }
  11. func sendmmsg(fd int, hdrs []linuxMmsgHdr, flags int) (int, error) {
  12. if len(hdrs) == 0 {
  13. return 0, nil
  14. }
  15. n, _, errno := unix.Syscall6(unix.SYS_SENDMMSG, uintptr(fd), uintptr(unsafe.Pointer(&hdrs[0])), uintptr(len(hdrs)), uintptr(flags), 0, 0)
  16. if errno != 0 {
  17. return int(n), errno
  18. }
  19. return int(n), nil
  20. }