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/sendto.c | |
parent | 18173559a23e28055640b152e623d9f0d40ecca8 (diff) | |
download | glibc-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/sendto.c')
-rw-r--r-- | sysdeps/unix/sysv/linux/sendto.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/sendto.c b/sysdeps/unix/sysv/linux/sendto.c index d2896a60ec..d7a2e535b4 100644 --- a/sysdeps/unix/sysv/linux/sendto.c +++ b/sysdeps/unix/sysv/linux/sendto.c @@ -21,13 +21,20 @@ #include <sysdep-cancel.h> #include <socketcall.h> +#include <kernel-features.h> +#include <sys/syscall.h> ssize_t __libc_sendto (int fd, const void *buf, size_t len, int flags, __CONST_SOCKADDR_ARG addr, socklen_t addrlen) { +#ifdef __ASSUME_SENDTO_SYSCALL + return SYSCALL_CANCEL (sendto, fd, buf, len, flags, addr.__sockaddr__, + addrlen); +#else return SOCKETCALL_CANCEL (sendto, fd, buf, len, flags, addr.__sockaddr__, addrlen); +#endif } weak_alias (__libc_sendto, sendto) weak_alias (__libc_sendto, __sendto) |