This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Use direct socket syscalls for new kernels on i386, m68k, microblaze, sh


LGTM.

On 09-12-2015 14:56, Joseph Myers wrote:
> Now that we have __ASSUME_* macros for direct socket syscalls to use
> them instead of socketcall when they can be assumed to be available on
> socketcall architectures, this patch defines those macros when
> appropriate for i386, m68k, microblaze and sh (for 4.3, 4.3, all
> supported kernels and 2.6.37, respectively; the only use of socketcall
> support on microblaze is it allows accept4 and sendmmsg to be
> supported on a wider range of kernel versions).
> 
> David, it seems that 32-bit SPARC is the only architecture supported
> by glibc that still lacks these direct syscalls.  It would be good to
> get them added to the SPARC kernel so we can eventually eliminate
> socketcall support in glibc (and thereby just use entries in
> sysdeps/unix/syscalls.list for most of these functions) when we can
> assume new-enough kernels.
> 
> Tested for i386 (testsuite, and that installed shared libraries are
> unchanged by this patch - not using a new enough kernel, so this
> doesn't actually test much, but the i386 and m68k code is essentially
> the same as that already in use for s390).
> 
> 2015-12-09  Joseph Myers  <joseph@codesourcery.com>
> 
> 	* sysdeps/unix/sysv/linux/i386/kernel-features.h
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SOCKET_SYSCALL):
> 	New macro.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_SOCKETPAIR_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_BIND_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_CONNECT_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_LISTEN_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_ACCEPT4_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_GETSOCKOPT_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_SETSOCKOPT_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_GETSOCKNAME_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_GETPEERNAME_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDTO_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_SENDTO_FOR_SEND_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDMSG_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVFROM_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_RECVFROM_FOR_RECV_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVMSG_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SHUTDOWN_SYSCALL):
> 	Likewise.
> 	* sysdeps/unix/sysv/linux/m68k/kernel-features.h
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVMMSG_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDMMSG_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SOCKET_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_SOCKETPAIR_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_BIND_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_CONNECT_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_LISTEN_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_ACCEPT4_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_GETSOCKOPT_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_SETSOCKOPT_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_GETSOCKNAME_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_GETPEERNAME_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDTO_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_SENDTO_FOR_SEND_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDMSG_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVFROM_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300]
> 	(__ASSUME_RECVFROM_FOR_RECV_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVMSG_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SHUTDOWN_SYSCALL):
> 	Likewise.
> 	* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
> 	(__ASSUME_SOCKET_SYSCALL): Likewise.
> 	(__ASSUME_BIND_SYSCALL): Likewise.
> 	(__ASSUME_CONNECT_SYSCALL): Likewise.
> 	(__ASSUME_LISTEN_SYSCALL): Likewise.
> 	(__ASSUME_ACCEPT_SYSCALL): Likewise.
> 	(__ASSUME_GETSOCKNAME_SYSCALL): Likewise.
> 	(__ASSUME_GETPEERNAME_SYSCALL): Likewise.
> 	(__ASSUME_SOCKETPAIR_SYSCALL): Likewise.
> 	(__ASSUME_SEND_SYSCALL): Likewise.
> 	(__ASSUME_SENDTO_SYSCALL): Likewise.
> 	(__ASSUME_RECV_SYSCALL): Likewise.
> 	(__ASSUME_RECVFROM_SYSCALL): Likewise.
> 	(__ASSUME_SHUTDOWN_SYSCALL): Likewise.
> 	(__ASSUME_GETSOCKOPT_SYSCALL): Likewise.
> 	(__ASSUME_SETSOCKOPT_SYSCALL): Likewise.
> 	(__ASSUME_SENDMSG_SYSCALL): Likewise.
> 	(__ASSUME_RECVMSG_SYSCALL): Likewise.
> 	* sysdeps/unix/sysv/linux/sh/kernel-features.h
> 	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SOCKET_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_BIND_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_CONNECT_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_LISTEN_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_ACCEPT_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625]
> 	(__ASSUME_GETSOCKNAME_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625]
> 	(__ASSUME_GETPEERNAME_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625]
> 	(__ASSUME_SOCKETPAIR_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SEND_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SENDTO_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_RECV_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_RECVFROM_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SHUTDOWN_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625]
> 	(__ASSUME_GETSOCKOPT_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625]
> 	(__ASSUME_SETSOCKOPT_SYSCALL): Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SENDMSG_SYSCALL):
> 	Likewise.
> 	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_RECVMSG_SYSCALL):
> 	Likewise.
> 
> diff --git a/sysdeps/unix/sysv/linux/i386/kernel-features.h b/sysdeps/unix/sysv/linux/i386/kernel-features.h
> index ee240a7..826fcc3 100644
> --- a/sysdeps/unix/sysv/linux/i386/kernel-features.h
> +++ b/sysdeps/unix/sysv/linux/i386/kernel-features.h
> @@ -32,4 +32,26 @@
>  #endif
>  #define __ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL	1
>  
> +/* Direct socketcalls available with kernel 4.3.  */
> +#if __LINUX_KERNEL_VERSION >= 0x040300
> +# define __ASSUME_SOCKET_SYSCALL             1
> +# define __ASSUME_SOCKETPAIR_SYSCALL         1
> +# define __ASSUME_BIND_SYSCALL               1
> +# define __ASSUME_CONNECT_SYSCALL            1
> +# define __ASSUME_LISTEN_SYSCALL             1
> +# define __ASSUME_ACCEPT4_SYSCALL            1
> +# define __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL 1
> +# define __ASSUME_GETSOCKOPT_SYSCALL         1
> +# define __ASSUME_SETSOCKOPT_SYSCALL         1
> +# define __ASSUME_GETSOCKNAME_SYSCALL        1
> +# define __ASSUME_GETPEERNAME_SYSCALL        1
> +# define __ASSUME_SENDTO_SYSCALL             1
> +# define __ASSUME_SENDTO_FOR_SEND_SYSCALL    1
> +# define __ASSUME_SENDMSG_SYSCALL            1
> +# define __ASSUME_RECVFROM_SYSCALL           1
> +# define __ASSUME_RECVFROM_FOR_RECV_SYSCALL  1
> +# define __ASSUME_RECVMSG_SYSCALL            1
> +# define __ASSUME_SHUTDOWN_SYSCALL           1
> +#endif
> +
>  #include_next <kernel-features.h>
> diff --git a/sysdeps/unix/sysv/linux/m68k/kernel-features.h b/sysdeps/unix/sysv/linux/m68k/kernel-features.h
> index ae1a11f..d373d4a 100644
> --- a/sysdeps/unix/sysv/linux/m68k/kernel-features.h
> +++ b/sysdeps/unix/sysv/linux/m68k/kernel-features.h
> @@ -20,6 +20,30 @@
>  /* m68k uses socketcall.  */
>  #define __ASSUME_SOCKETCALL	1
>  
> +/* Direct socketcalls available with kernel 4.3.  */
> +#if __LINUX_KERNEL_VERSION >= 0x040300
> +# define __ASSUME_RECVMMSG_SYSCALL           1
> +# define __ASSUME_SENDMMSG_SYSCALL           1
> +# define __ASSUME_SOCKET_SYSCALL             1
> +# define __ASSUME_SOCKETPAIR_SYSCALL         1
> +# define __ASSUME_BIND_SYSCALL               1
> +# define __ASSUME_CONNECT_SYSCALL            1
> +# define __ASSUME_LISTEN_SYSCALL             1
> +# define __ASSUME_ACCEPT4_SYSCALL            1
> +# define __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL 1
> +# define __ASSUME_GETSOCKOPT_SYSCALL         1
> +# define __ASSUME_SETSOCKOPT_SYSCALL         1
> +# define __ASSUME_GETSOCKNAME_SYSCALL        1
> +# define __ASSUME_GETPEERNAME_SYSCALL        1
> +# define __ASSUME_SENDTO_SYSCALL             1
> +# define __ASSUME_SENDTO_FOR_SEND_SYSCALL    1
> +# define __ASSUME_SENDMSG_SYSCALL            1
> +# define __ASSUME_RECVFROM_SYSCALL           1
> +# define __ASSUME_RECVFROM_FOR_RECV_SYSCALL  1
> +# define __ASSUME_RECVMSG_SYSCALL            1
> +# define __ASSUME_SHUTDOWN_SYSCALL           1
> +#endif
> +
>  #include_next <kernel-features.h>
>  
>  /* These syscalls were added only in 3.0 for m68k.  */
> diff --git a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h
> index f2c580d3..241f1f3 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h
> +++ b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h
> @@ -19,6 +19,25 @@
>  /* MicroBlaze uses socketcall.  */
>  #define __ASSUME_SOCKETCALL	1
>  
> +/* All supported kernel versions for MicroBlaze have these syscalls.  */
> +#define __ASSUME_SOCKET_SYSCALL		1
> +#define __ASSUME_BIND_SYSCALL		1
> +#define __ASSUME_CONNECT_SYSCALL	1
> +#define __ASSUME_LISTEN_SYSCALL		1
> +#define __ASSUME_ACCEPT_SYSCALL		1
> +#define __ASSUME_GETSOCKNAME_SYSCALL	1
> +#define __ASSUME_GETPEERNAME_SYSCALL	1
> +#define __ASSUME_SOCKETPAIR_SYSCALL	1
> +#define __ASSUME_SEND_SYSCALL		1
> +#define __ASSUME_SENDTO_SYSCALL		1
> +#define __ASSUME_RECV_SYSCALL		1
> +#define __ASSUME_RECVFROM_SYSCALL	1
> +#define __ASSUME_SHUTDOWN_SYSCALL	1
> +#define __ASSUME_GETSOCKOPT_SYSCALL	1
> +#define __ASSUME_SETSOCKOPT_SYSCALL	1
> +#define __ASSUME_SENDMSG_SYSCALL	1
> +#define __ASSUME_RECVMSG_SYSCALL	1
> +
>  /* Support for the accept4 and recvmmsg syscalls was added in 2.6.33.  */
>  #if __LINUX_KERNEL_VERSION >= 0x020621
>  # define __ASSUME_ACCEPT4_SYSCALL        1
> diff --git a/sysdeps/unix/sysv/linux/sh/kernel-features.h b/sysdeps/unix/sysv/linux/sh/kernel-features.h
> index 5e3487c..17fbdd1 100644
> --- a/sysdeps/unix/sysv/linux/sh/kernel-features.h
> +++ b/sysdeps/unix/sysv/linux/sh/kernel-features.h
> @@ -20,6 +20,27 @@
>  /* SH uses socketcall.  */
>  #define __ASSUME_SOCKETCALL		1
>  
> +/* These syscalls were added for SH in 2.6.37.  */
> +#if __LINUX_KERNEL_VERSION >= 0x020625
> +# define __ASSUME_SOCKET_SYSCALL	1
> +# define __ASSUME_BIND_SYSCALL		1
> +# define __ASSUME_CONNECT_SYSCALL	1
> +# define __ASSUME_LISTEN_SYSCALL	1
> +# define __ASSUME_ACCEPT_SYSCALL	1
> +# define __ASSUME_GETSOCKNAME_SYSCALL	1
> +# define __ASSUME_GETPEERNAME_SYSCALL	1
> +# define __ASSUME_SOCKETPAIR_SYSCALL	1
> +# define __ASSUME_SEND_SYSCALL		1
> +# define __ASSUME_SENDTO_SYSCALL	1
> +# define __ASSUME_RECV_SYSCALL		1
> +# define __ASSUME_RECVFROM_SYSCALL	1
> +# define __ASSUME_SHUTDOWN_SYSCALL	1
> +# define __ASSUME_GETSOCKOPT_SYSCALL	1
> +# define __ASSUME_SETSOCKOPT_SYSCALL	1
> +# define __ASSUME_SENDMSG_SYSCALL	1
> +# define __ASSUME_RECVMSG_SYSCALL	1
> +#endif
> +
>  /* The accept4 syscall was added for SH in 2.6.37.  */
>  #if __LINUX_KERNEL_VERSION >= 0x020625
>  # define __ASSUME_ACCEPT4_SYSCALL	1
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]