1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Simplify recvmmsg code.

Now we can assume a kernel with recvmmsg support, this patch
simplifies the implementation to be similar to that for accept4:
either using socketcall or the syscall according to whether the
syscall is known to be available, without further fallback
implementations.

(In fact further simplification is possible, getting rid of the
__ASSUME_*_SYSCALL_WITH_SOCKETCALL macros now that the minimum kernel
is guaranteed support for all of accept4, recvmmsg, sendmmsg, whether
through syscalls or through socketcall.  I intend to do that for all
of accept4 / recvmmsg / sendmmsg together - so making their
implementations just like those for older socket functions - once the
basic cleanup for 3.2 minimum kernel is done for sendmmsg as well as
recvmmsg.)

Tested for x86_64 and x86.

	* sysdeps/unix/sysv/linux/kernel-features.h
	(__ASSUME_RECVMMSG_SYSCALL): Define unconditionally.
	(__ASSUME_RECVMMSG_SOCKETCALL): Remove macro.
	(__ASSUME_RECVMMSG): Likewise.
	* sysdeps/unix/sysv/linux/recvmmsg.c (recvmmsg): Define using
	recvmmsg syscall if it can be assumed to be present, socketcall
	otherwise, with no fallback for runtime failure.
This commit is contained in:
Joseph Myers
2017-05-09 20:01:01 +00:00
parent 4fc12f0eda
commit 9a45f54310
3 changed files with 21 additions and 69 deletions

View File

@ -90,13 +90,7 @@
/* Support for recvmmsg functionality was added in 2.6.33. The macros
defined correspond to those for accept4. */
#if __LINUX_KERNEL_VERSION >= 0x020621
# ifdef __ASSUME_SOCKETCALL
# define __ASSUME_RECVMMSG_SOCKETCALL 1
# endif
# define __ASSUME_RECVMMSG_SYSCALL 1
# define __ASSUME_RECVMMSG 1
#endif
#define __ASSUME_RECVMMSG_SYSCALL 1
/* statfs fills in f_flags since 2.6.36. */
#if __LINUX_KERNEL_VERSION >= 0x020624