summary refs log tree commit diff
path: root/include
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-07-06 16:55:46 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-09-28 17:28:39 -0300
commitb16f282cb079980ddb4de5c9a2350e8b1919d023 (patch)
tree86c0b22b83aa9a9e8aebc6fd7b906e51a88aa02c /include
parentc3a020eedde907e7df69159a54bf59d39db85709 (diff)
downloadglibc-b16f282cb079980ddb4de5c9a2350e8b1919d023.tar.gz
glibc-b16f282cb079980ddb4de5c9a2350e8b1919d023.tar.xz
glibc-b16f282cb079980ddb4de5c9a2350e8b1919d023.zip
linux: Add time64 recvmmsg support
The wire-up syscall __NR_recvmmsg_time64 (for 32-bit) or
__NR_recvmmsg (for 64-bit) is used as default.  The 32-bit fallback
is used iff __ASSUME_TIME64_SYSCALLS is not defined, which assumes the
kernel ABI provides either __NR_socketcall or __NR_recvmmsg
(32-bit time_t).

It does not handle the timestamps on ancillary data (SCM_TIMESTAMPING
records).

Checked on x86_64-linux-gnu and i686-linux-gnu.

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Diffstat (limited to 'include')
-rw-r--r--include/sys/socket.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/sys/socket.h b/include/sys/socket.h
index 26db0e0d77..0e39dd2a3a 100644
--- a/include/sys/socket.h
+++ b/include/sys/socket.h
@@ -104,6 +104,14 @@ extern ssize_t __libc_recvmsg (int __fd, struct msghdr *__message,
 			       int __flags);
 extern ssize_t __recvmsg (int __fd, struct msghdr *__message,
 			  int __flags) attribute_hidden;
+#if __TIMESIZE == 64
+# define __recvmmsg64 __recvmmsg
+#else
+extern int __recvmmsg64 (int __fd, struct mmsghdr *vmessages,
+			 unsigned int vlen, int flags,
+			 struct __timespec64 *timeout);
+libc_hidden_proto (__recvmmsg64)
+#endif
 
 /* Set socket FD's option OPTNAME at protocol level LEVEL
    to *OPTVAL (which is OPTLEN bytes long).