From f4491417cc80b4a01e72e9d218af137765ee5918 Mon Sep 17 00:00:00 2001 From: Rajalakshmi Srinivasaraghavan Date: Tue, 25 Aug 2015 10:23:47 -0300 Subject: 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 * 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. --- sysdeps/unix/sysv/linux/connect.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'sysdeps/unix/sysv/linux/connect.c') diff --git a/sysdeps/unix/sysv/linux/connect.c b/sysdeps/unix/sysv/linux/connect.c index dd17e8ca97..d62e4d7c9e 100644 --- a/sysdeps/unix/sysv/linux/connect.c +++ b/sysdeps/unix/sysv/linux/connect.c @@ -21,11 +21,17 @@ #include #include +#include +#include int __libc_connect (int fd, __CONST_SOCKADDR_ARG addr, socklen_t len) { +#ifdef __ASSUME_CONNECT_SYSCALL + return SYSCALL_CANCEL (connect, fd, addr.__sockaddr__, len); +#else return SOCKETCALL_CANCEL (connect, fd, addr.__sockaddr__, len); +#endif } weak_alias (__libc_connect, connect) weak_alias (__libc_connect, __connect) -- cgit v1.2.3