diff options
author | Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com> | 2015-08-25 10:23:47 -0300 |
---|---|---|
committer | Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com> | 2015-08-25 13:45:56 -0300 |
commit | f4491417cc80b4a01e72e9d218af137765ee5918 (patch) | |
tree | 16c8e1335b1d098af8e16b116fef182c1cf9af2d /sysdeps/unix/sysv/linux/getpeername.c | |
parent | 18173559a23e28055640b152e623d9f0d40ecca8 (diff) | |
download | glibc-f4491417cc80b4a01e72e9d218af137765ee5918.zip glibc-f4491417cc80b4a01e72e9d218af137765ee5918.tar.gz glibc-f4491417cc80b4a01e72e9d218af137765ee5918.tar.bz2 |
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/getpeername.c')
-rw-r--r-- | sysdeps/unix/sysv/linux/getpeername.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/getpeername.c b/sysdeps/unix/sysv/linux/getpeername.c index 05fd2e8..cd5725b 100644 --- a/sysdeps/unix/sysv/linux/getpeername.c +++ b/sysdeps/unix/sysv/linux/getpeername.c @@ -20,10 +20,16 @@ #include <sys/socket.h> #include <socketcall.h> +#include <kernel-features.h> +#include <sys/syscall.h> int __getpeername (int fd, __SOCKADDR_ARG addr, socklen_t *len) { +#ifdef __ASSUME_GETPEERNAME_SYSCALL + return INLINE_SYSCALL (getpeername, 3, fd, addr.__sockaddr__, len); +#else return SOCKETCALL (getpeername, fd, addr.__sockaddr__, len); +#endif } weak_alias (__getpeername, getpeername) |