mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	Linux: Assume and consolidate shutdown wire-up syscall
And disable if kernel does not support it. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: Carlos O'Donell <carlos@redhat.com>
This commit is contained in:
		
				
					committed by
					
						
						Adhemerval Zanella
					
				
			
			
				
	
			
			
			
						parent
						
							377a14a22a
						
					
				
				
					commit
					127945c561
				
			@@ -3,4 +3,3 @@
 | 
			
		||||
# Socket APIs
 | 
			
		||||
getsockname	-	getsockname	i:ipp	__getsockname	getsockname
 | 
			
		||||
getpeername	-	getpeername	i:ipp	__getpeername	getpeername
 | 
			
		||||
shutdown	-	shutdown	i:ii	__shutdown	shutdown
 | 
			
		||||
 
 | 
			
		||||
@@ -21,13 +21,13 @@
 | 
			
		||||
#if __LINUX_KERNEL_VERSION >= 0x040300
 | 
			
		||||
# define __ASSUME_GETSOCKNAME_SYSCALL        1
 | 
			
		||||
# define __ASSUME_GETPEERNAME_SYSCALL        1
 | 
			
		||||
# define __ASSUME_SHUTDOWN_SYSCALL           1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include_next <kernel-features.h>
 | 
			
		||||
 | 
			
		||||
#undef __ASSUME_ACCEPT_SYSCALL
 | 
			
		||||
 | 
			
		||||
/* Direct socketcalls available with kernel 4.3.  */
 | 
			
		||||
#if __LINUX_KERNEL_VERSION < 0x040300
 | 
			
		||||
# undef __ASSUME_ACCEPT4_SYSCALL
 | 
			
		||||
# undef __ASSUME_SENDMSG_SYSCALL
 | 
			
		||||
@@ -41,6 +41,7 @@
 | 
			
		||||
# undef __ASSUME_SOCKET_SYSCALL
 | 
			
		||||
# undef __ASSUME_SOCKETPAIR_SYSCALL
 | 
			
		||||
# undef __ASSUME_LISTEN_SYSCALL
 | 
			
		||||
# undef __ASSUME_SHUTDOWN_SYSCALL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* i686 only supports ipc syscall before 5.1.  */
 | 
			
		||||
 
 | 
			
		||||
@@ -83,6 +83,7 @@
 | 
			
		||||
#define __ASSUME_SOCKET_SYSCALL		1
 | 
			
		||||
#define __ASSUME_SOCKETPAIR_SYSCALL	1
 | 
			
		||||
#define __ASSUME_LISTEN_SYSCALL		1
 | 
			
		||||
#define __ASSUME_SHUTDOWN_SYSCALL	1
 | 
			
		||||
 | 
			
		||||
/* Support for SysV IPC through wired syscalls.  All supported architectures
 | 
			
		||||
   either support ipc syscall and/or all the ipc correspondent syscalls.  */
 | 
			
		||||
 
 | 
			
		||||
@@ -21,13 +21,13 @@
 | 
			
		||||
#if __LINUX_KERNEL_VERSION >= 0x040300
 | 
			
		||||
# define __ASSUME_GETSOCKNAME_SYSCALL        1
 | 
			
		||||
# define __ASSUME_GETPEERNAME_SYSCALL        1
 | 
			
		||||
# define __ASSUME_SHUTDOWN_SYSCALL           1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include_next <kernel-features.h>
 | 
			
		||||
 | 
			
		||||
#undef __ASSUME_ACCEPT_SYSCALL
 | 
			
		||||
 | 
			
		||||
/* Direct socketcalls available with kernel 4.3.  */
 | 
			
		||||
#if __LINUX_KERNEL_VERSION < 0x040300
 | 
			
		||||
# undef __ASSUME_ACCEPT4_SYSCALL
 | 
			
		||||
# undef __ASSUME_RECVMMSG_SYSCALL
 | 
			
		||||
@@ -43,6 +43,7 @@
 | 
			
		||||
# undef __ASSUME_SOCKET_SYSCALL
 | 
			
		||||
# undef __ASSUME_SOCKETPAIR_SYSCALL
 | 
			
		||||
# undef __ASSUME_LISTEN_SYSCALL
 | 
			
		||||
# undef __ASSUME_SHUTDOWN_SYSCALL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* No support for PI futexes or robust mutexes before 3.10 for m68k.  */
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,6 @@
 | 
			
		||||
#define __ASSUME_GETPEERNAME_SYSCALL	1
 | 
			
		||||
#define __ASSUME_SEND_SYSCALL		1
 | 
			
		||||
#define __ASSUME_RECV_SYSCALL		1
 | 
			
		||||
#define __ASSUME_SHUTDOWN_SYSCALL	1
 | 
			
		||||
 | 
			
		||||
#include_next <kernel-features.h>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,6 @@
 | 
			
		||||
#define __ASSUME_GETPEERNAME_SYSCALL	1
 | 
			
		||||
#define __ASSUME_SEND_SYSCALL		1
 | 
			
		||||
#define __ASSUME_RECV_SYSCALL		1
 | 
			
		||||
#define __ASSUME_SHUTDOWN_SYSCALL	1
 | 
			
		||||
 | 
			
		||||
/* Define this if your 32-bit syscall API requires 64-bit register
 | 
			
		||||
   pairs to start with an even-number register.  */
 | 
			
		||||
 
 | 
			
		||||
@@ -21,13 +21,13 @@
 | 
			
		||||
#if __LINUX_KERNEL_VERSION >= 0x040300
 | 
			
		||||
# define __ASSUME_GETSOCKNAME_SYSCALL        1
 | 
			
		||||
# define __ASSUME_GETPEERNAME_SYSCALL        1
 | 
			
		||||
# define __ASSUME_SHUTDOWN_SYSCALL           1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include_next <kernel-features.h>
 | 
			
		||||
 | 
			
		||||
#undef __ASSUME_ACCEPT_SYSCALL
 | 
			
		||||
 | 
			
		||||
/* Direct socketcalls available with kernel 4.3.  */
 | 
			
		||||
#if __LINUX_KERNEL_VERSION < 0x040300
 | 
			
		||||
# undef __ASSUME_ACCEPT4_SYSCALL
 | 
			
		||||
# undef __ASSUME_RECVMMSG_SYSCALL
 | 
			
		||||
@@ -43,6 +43,7 @@
 | 
			
		||||
# undef __ASSUME_SOCKET_SYSCALL
 | 
			
		||||
# undef __ASSUME_SOCKETPAIR_SYSCALL
 | 
			
		||||
# undef __ASSUME_LISTEN_SYSCALL
 | 
			
		||||
# undef __ASSUME_SHUTDOWN_SYSCALL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* s390 only supports ipc syscall before 5.1.  */
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,6 @@
 | 
			
		||||
#define __ASSUME_GETPEERNAME_SYSCALL	1
 | 
			
		||||
#define __ASSUME_SEND_SYSCALL		1
 | 
			
		||||
#define __ASSUME_RECV_SYSCALL		1
 | 
			
		||||
#define __ASSUME_SHUTDOWN_SYSCALL	1
 | 
			
		||||
 | 
			
		||||
#include_next <kernel-features.h>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,19 +15,14 @@
 | 
			
		||||
   License along with the GNU C Library; if not, see
 | 
			
		||||
   <https://www.gnu.org/licenses/>.  */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <signal.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
 | 
			
		||||
#include <socketcall.h>
 | 
			
		||||
#include <kernel-features.h>
 | 
			
		||||
#include <sys/syscall.h>
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
__shutdown (int fd, int how)
 | 
			
		||||
{
 | 
			
		||||
#ifdef __ASSUME_SHUTDOWN_SYSCALL
 | 
			
		||||
  return INLINE_SYSCALL (shutdown, 2, fd, how);
 | 
			
		||||
  return INLINE_SYSCALL_CALL (shutdown, fd, how);
 | 
			
		||||
#else
 | 
			
		||||
  return SOCKETCALL (shutdown, fd, how);
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -40,8 +40,6 @@
 | 
			
		||||
# undef __ASSUME_SENDTO_SYSCALL
 | 
			
		||||
# undef __ASSUME_GETSOCKOPT_SYSCALL
 | 
			
		||||
# undef __ASSUME_SETSOCKOPT_SYSCALL
 | 
			
		||||
#else
 | 
			
		||||
# define __ASSUME_SHUTDOWN_SYSCALL           1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* These syscalls were added for both 32-bit and 64-bit in 4.4.  */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user