diff options
Diffstat (limited to 'syscall_linux_386.go')
-rw-r--r-- | syscall_linux_386.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/syscall_linux_386.go b/syscall_linux_386.go new file mode 100644 index 0000000..76d7c7e --- /dev/null +++ b/syscall_linux_386.go @@ -0,0 +1,53 @@ +// +build linux,386 + +/* Copyright 2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. + */ + +package main + +import ( + "golang.org/x/sys/unix" + "syscall" + "unsafe" +) + +const ( + _SENDMSG = 16 + _RECVMSG = 17 +) + +func sendmsg(fd int, msghdr *unix.Msghdr, flags int) (uintptr, uintptr, syscall.Errno) { + args := struct { + fd uintptr + msghdr uintptr + flags uintptr + }{ + uintptr(fd), + uintptr(unsafe.Pointer(msghdr)), + uintptr(flags), + } + return unix.Syscall( + unix.SYS_SOCKETCALL, + _SENDMSG, + uintptr(unsafe.Pointer(&args)), + 0, + ) +} + +func recvmsg(fd int, msghdr *unix.Msghdr, flags int) (uintptr, uintptr, syscall.Errno) { + args := struct { + fd uintptr + msghdr uintptr + flags uintptr + }{ + uintptr(fd), + uintptr(unsafe.Pointer(msghdr)), + uintptr(flags), + } + return unix.Syscall( + unix.SYS_SOCKETCALL, + _RECVMSG, + uintptr(unsafe.Pointer(&args)), + 0, + ) +} |