summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/syscall.h
diff options
context:
space:
mode:
authorKrishnan Parthasarathi <kparthas@redhat.com>2018-10-11 15:16:41 +0530
committerRaghavendra G <rgowdapp@redhat.com>2018-10-12 02:11:38 +0000
commit62faf7d37bd8b6be6657b1e3b61f92eac5b84653 (patch)
tree0143f6ae133ff56fa4823815d3084c632ce37440 /libglusterfs/src/syscall.h
parent807ec72d740a4548c250cc660c89fc59d2f191d6 (diff)
socket: use accept4/paccept for nonblocking socket
This reduces the no. of syscalls on Linux systems from 2, accept(2) and fcntl(2) for setting O_NONBLOCK, to a single accept4(2). On NetBSD, we have paccept(2) that does the same, if we leave signal masking aside. Added sys_accept which accepts an extra flags argument than accept(2). This would opportunistically use accept4/paccept as available. It would fallback to accept(2) and fcntl(2) otherwise. While at this, the patch sets FD_CLOEXEC flag on the accepted socket fd. BUG: 1236272 Change-Id: I41e43fd3e36d6dabb07e578a1cea7f45b7b4e37f fixes: bz#1236272 Signed-off-by: Krishnan Parthasarathi <kparthas@redhat.com>
Diffstat (limited to 'libglusterfs/src/syscall.h')
-rw-r--r--libglusterfs/src/syscall.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/libglusterfs/src/syscall.h b/libglusterfs/src/syscall.h
index 9bad49edb7c..faaf694b22c 100644
--- a/libglusterfs/src/syscall.h
+++ b/libglusterfs/src/syscall.h
@@ -16,6 +16,7 @@
#include <sys/statvfs.h>
#include <sys/stat.h>
#include <sys/time.h>
+#include <sys/socket.h>
/* GF follows the Linux XATTR definition, which differs in Darwin. */
#define GF_XATTR_CREATE 0x1 /* set value, fail if attr already exists */
@@ -224,4 +225,7 @@ sys_pwrite(int fd, const void *buf, size_t count, off_t offset);
int
sys_socket(int domain, int type, int protocol);
+int
+sys_accept(int sock, struct sockaddr *sockaddr, socklen_t *socklen, int flags);
+
#endif /* __SYSCALL_H__ */