about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/bind.c
diff options
context:
space:
mode:
authorRajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>2015-08-25 10:23:47 -0300
committerTulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>2015-08-25 13:45:56 -0300
commitf4491417cc80b4a01e72e9d218af137765ee5918 (patch)
tree16c8e1335b1d098af8e16b116fef182c1cf9af2d /sysdeps/unix/sysv/linux/bind.c
parent18173559a23e28055640b152e623d9f0d40ecca8 (diff)
downloadglibc-f4491417cc80b4a01e72e9d218af137765ee5918.tar.gz
glibc-f4491417cc80b4a01e72e9d218af137765ee5918.tar.xz
glibc-f4491417cc80b4a01e72e9d218af137765ee5918.zip
Call direct system calls for socket operations
Explicit system calls for the socket operations were added in Linux kernel
in commit 86250b9d12ca for powerpc. This patch make use of those instead of
calling socketcall to save number of cycles on networking syscalls.

2015-08-25  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>

	* sysdeps/unix/sysv/linux/powerpc/kernel-features.h: Define new macros.
	* sysdeps/unix/sysv/linux/accept.c: Call direct system call.
	* sysdeps/unix/sysv/linux/bind.c: Call direct system call.
	* sysdeps/unix/sysv/linux/connect.c: Call direct system call.
	* sysdeps/unix/sysv/linux/getpeername.c: Call direct system call.
	* sysdeps/unix/sysv/linux/getsockname.c: Call direct system call.
	* sysdeps/unix/sysv/linux/getsockopt.c: Call direct system call.
	* sysdeps/unix/sysv/linux/listen.c: Call direct system call.
	* sysdeps/unix/sysv/linux/recv.c: Call direct system call.
	* sysdeps/unix/sysv/linux/recvfrom.c: Call direct system call.
	* sysdeps/unix/sysv/linux/recvmsg.c: Call direct system call.
	* sysdeps/unix/sysv/linux/send.c: Call direct system call.
	* sysdeps/unix/sysv/linux/sendmsg.c: Call direct system call.
	* sysdeps/unix/sysv/linux/sendto.c: Call direct system call.
	* sysdeps/unix/sysv/linux/setsockopt.c: Call direct system call.
	* sysdeps/unix/sysv/linux/shutdown.c: Call direct system call.
	* sysdeps/unix/sysv/linux/socket.c: Call direct system call.
	* sysdeps/unix/sysv/linux/socketpair.c: Call direct system call.
Diffstat (limited to 'sysdeps/unix/sysv/linux/bind.c')
-rw-r--r--sysdeps/unix/sysv/linux/bind.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/bind.c b/sysdeps/unix/sysv/linux/bind.c
index db72df6c77..4c13b09435 100644
--- a/sysdeps/unix/sysv/linux/bind.c
+++ b/sysdeps/unix/sysv/linux/bind.c
@@ -20,10 +20,16 @@
 #include <sys/socket.h>
 
 #include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
 
 int
 __bind (int fd, __CONST_SOCKADDR_ARG addr, socklen_t len)
 {
+#ifdef __ASSUME_BIND_SYSCALL
+  return INLINE_SYSCALL (bind, 3, fd, addr.__sockaddr__, len);
+#else
   return SOCKETCALL (bind, fd, addr.__sockaddr__, len, 0, 0, 0);
+#endif
 }
 weak_alias (__bind, bind)