[fusl] Remove socketcall abstraction
i386 was the only architecture which required this indirection.
R=phosek@chromium.org, viettrungluu@chromium.org
Review URL: https://codereview.chromium.org/1730723002 .
diff --git a/fusl/src/internal/syscall.h b/fusl/src/internal/syscall.h
index 56ed328..9e400e0 100644
--- a/fusl/src/internal/syscall.h
+++ b/fusl/src/internal/syscall.h
@@ -63,9 +63,6 @@
#define __syscall(...) __SYSCALL_DISP(__syscall, __VA_ARGS__)
#define syscall(...) __syscall_ret(__syscall(__VA_ARGS__))
-#define socketcall __socketcall
-#define socketcall_cp __socketcall_cp
-
#define __syscall_cp0(n) (__syscall_cp)(n, 0, 0, 0, 0, 0, 0)
#define __syscall_cp1(n, a) (__syscall_cp)(n, __scc(a), 0, 0, 0, 0, 0)
#define __syscall_cp2(n, a, b) (__syscall_cp)(n, __scc(a), __scc(b), 0, 0, 0, 0)
@@ -81,20 +78,6 @@
#define __syscall_cp(...) __SYSCALL_DISP(__syscall_cp, __VA_ARGS__)
#define syscall_cp(...) __syscall_ret(__syscall_cp(__VA_ARGS__))
-#ifndef SYSCALL_USE_SOCKETCALL
-#define __socketcall(nm, a, b, c, d, e, f) syscall(SYS_##nm, a, b, c, d, e, f)
-#define __socketcall_cp(nm, a, b, c, d, e, f) \
- syscall_cp(SYS_##nm, a, b, c, d, e, f)
-#else
-#define __socketcall(nm, a, b, c, d, e, f) \
- syscall(SYS_socketcall, __SC_##nm, \
- ((long[6]){(long)a, (long)b, (long)c, (long)d, (long)e, (long)f}))
-#define __socketcall_cp(nm, a, b, c, d, e, f) \
- syscall_cp( \
- SYS_socketcall, __SC_##nm, \
- ((long[6]){(long)a, (long)b, (long)c, (long)d, (long)e, (long)f}))
-#endif
-
/* fixup legacy 16-bit junk */
#ifdef SYS_getuid32
@@ -220,29 +203,6 @@
#define SYS_sendfile SYS_sendfile64
#endif
-/* socketcall calls */
-
-#define __SC_socket 1
-#define __SC_bind 2
-#define __SC_connect 3
-#define __SC_listen 4
-#define __SC_accept 5
-#define __SC_getsockname 6
-#define __SC_getpeername 7
-#define __SC_socketpair 8
-#define __SC_send 9
-#define __SC_recv 10
-#define __SC_sendto 11
-#define __SC_recvfrom 12
-#define __SC_shutdown 13
-#define __SC_setsockopt 14
-#define __SC_getsockopt 15
-#define __SC_sendmsg 16
-#define __SC_recvmsg 17
-#define __SC_accept4 18
-#define __SC_recvmmsg 19
-#define __SC_sendmmsg 20
-
#ifdef SYS_open
#define __sys_open2(x, pn, fl) __syscall2(SYS_open, pn, (fl) | O_LARGEFILE)
#define __sys_open3(x, pn, fl, mo) \
diff --git a/fusl/src/network/accept.c b/fusl/src/network/accept.c
index 4a25af3..d96c397 100644
--- a/fusl/src/network/accept.c
+++ b/fusl/src/network/accept.c
@@ -3,5 +3,5 @@
#include "libc.h"
int accept(int fd, struct sockaddr* restrict addr, socklen_t* restrict len) {
- return socketcall_cp(accept, fd, addr, len, 0, 0, 0);
+ return syscall_cp(SYS_accept, fd, addr, len, 0, 0, 0);
}
diff --git a/fusl/src/network/accept4.c b/fusl/src/network/accept4.c
index 11f627c..ce29e84 100644
--- a/fusl/src/network/accept4.c
+++ b/fusl/src/network/accept4.c
@@ -11,7 +11,7 @@
int flg) {
if (!flg)
return accept(fd, addr, len);
- int ret = socketcall_cp(accept4, fd, addr, len, flg, 0, 0);
+ int ret = syscall_cp(SYS_accept4, fd, addr, len, flg, 0, 0);
if (ret >= 0 || (errno != ENOSYS && errno != EINVAL))
return ret;
ret = accept(fd, addr, len);
diff --git a/fusl/src/network/bind.c b/fusl/src/network/bind.c
index 624bf13..17da0fd 100644
--- a/fusl/src/network/bind.c
+++ b/fusl/src/network/bind.c
@@ -2,5 +2,5 @@
#include "syscall.h"
int bind(int fd, const struct sockaddr* addr, socklen_t len) {
- return socketcall(bind, fd, addr, len, 0, 0, 0);
+ return syscall(SYS_bind, fd, addr, len, 0, 0, 0);
}
diff --git a/fusl/src/network/connect.c b/fusl/src/network/connect.c
index 170a120..9398362 100644
--- a/fusl/src/network/connect.c
+++ b/fusl/src/network/connect.c
@@ -3,5 +3,5 @@
#include "libc.h"
int connect(int fd, const struct sockaddr* addr, socklen_t len) {
- return socketcall_cp(connect, fd, addr, len, 0, 0, 0);
+ return syscall_cp(SYS_connect, fd, addr, len, 0, 0, 0);
}
diff --git a/fusl/src/network/getpeername.c b/fusl/src/network/getpeername.c
index 82cb017..8e8390b 100644
--- a/fusl/src/network/getpeername.c
+++ b/fusl/src/network/getpeername.c
@@ -4,5 +4,5 @@
int getpeername(int fd,
struct sockaddr* restrict addr,
socklen_t* restrict len) {
- return socketcall(getpeername, fd, addr, len, 0, 0, 0);
+ return syscall(SYS_getpeername, fd, addr, len, 0, 0, 0);
}
diff --git a/fusl/src/network/getsockname.c b/fusl/src/network/getsockname.c
index 2d8d2b6..d028133 100644
--- a/fusl/src/network/getsockname.c
+++ b/fusl/src/network/getsockname.c
@@ -4,5 +4,5 @@
int getsockname(int fd,
struct sockaddr* restrict addr,
socklen_t* restrict len) {
- return socketcall(getsockname, fd, addr, len, 0, 0, 0);
+ return syscall(SYS_getsockname, fd, addr, len, 0, 0, 0);
}
diff --git a/fusl/src/network/getsockopt.c b/fusl/src/network/getsockopt.c
index d4713bd..e7692a5 100644
--- a/fusl/src/network/getsockopt.c
+++ b/fusl/src/network/getsockopt.c
@@ -6,5 +6,5 @@
int optname,
void* restrict optval,
socklen_t* restrict optlen) {
- return socketcall(getsockopt, fd, level, optname, optval, optlen, 0);
+ return syscall(SYS_getsockopt, fd, level, optname, optval, optlen, 0);
}
diff --git a/fusl/src/network/listen.c b/fusl/src/network/listen.c
index f26d2d4..dfd06a7 100644
--- a/fusl/src/network/listen.c
+++ b/fusl/src/network/listen.c
@@ -2,5 +2,5 @@
#include "syscall.h"
int listen(int fd, int backlog) {
- return socketcall(listen, fd, backlog, 0, 0, 0, 0);
+ return syscall(SYS_listen, fd, backlog, 0, 0, 0, 0);
}
diff --git a/fusl/src/network/recvfrom.c b/fusl/src/network/recvfrom.c
index a0345f8..2cf4dfc 100644
--- a/fusl/src/network/recvfrom.c
+++ b/fusl/src/network/recvfrom.c
@@ -8,5 +8,5 @@
int flags,
struct sockaddr* restrict addr,
socklen_t* restrict alen) {
- return socketcall_cp(recvfrom, fd, buf, len, flags, addr, alen);
+ return syscall_cp(SYS_recvfrom, fd, buf, len, flags, addr, alen);
}
diff --git a/fusl/src/network/recvmsg.c b/fusl/src/network/recvmsg.c
index cf37273..d13b35f 100644
--- a/fusl/src/network/recvmsg.c
+++ b/fusl/src/network/recvmsg.c
@@ -13,7 +13,7 @@
msg = &h;
}
#endif
- r = socketcall_cp(recvmsg, fd, msg, flags, 0, 0, 0);
+ r = syscall_cp(SYS_recvmsg, fd, msg, flags, 0, 0, 0);
#if LONG_MAX > INT_MAX
if (orig)
*orig = h;
diff --git a/fusl/src/network/sendmsg.c b/fusl/src/network/sendmsg.c
index 9e730f2..0c5ae95 100644
--- a/fusl/src/network/sendmsg.c
+++ b/fusl/src/network/sendmsg.c
@@ -25,5 +25,5 @@
}
}
#endif
- return socketcall_cp(sendmsg, fd, msg, flags, 0, 0, 0);
+ return syscall_cp(SYS_sendmsg, fd, msg, flags, 0, 0, 0);
}
diff --git a/fusl/src/network/sendto.c b/fusl/src/network/sendto.c
index c3a7367..6fe0aea 100644
--- a/fusl/src/network/sendto.c
+++ b/fusl/src/network/sendto.c
@@ -8,5 +8,5 @@
int flags,
const struct sockaddr* addr,
socklen_t alen) {
- return socketcall_cp(sendto, fd, buf, len, flags, addr, alen);
+ return syscall_cp(SYS_sendto, fd, buf, len, flags, addr, alen);
}
diff --git a/fusl/src/network/setsockopt.c b/fusl/src/network/setsockopt.c
index 56cdc3d..27cfb5d 100644
--- a/fusl/src/network/setsockopt.c
+++ b/fusl/src/network/setsockopt.c
@@ -6,5 +6,5 @@
int optname,
const void* optval,
socklen_t optlen) {
- return socketcall(setsockopt, fd, level, optname, optval, optlen, 0);
+ return syscall(SYS_setsockopt, fd, level, optname, optval, optlen, 0);
}
diff --git a/fusl/src/network/shutdown.c b/fusl/src/network/shutdown.c
index f021833..77f6b54 100644
--- a/fusl/src/network/shutdown.c
+++ b/fusl/src/network/shutdown.c
@@ -2,5 +2,5 @@
#include "syscall.h"
int shutdown(int fd, int how) {
- return socketcall(shutdown, fd, how, 0, 0, 0, 0);
+ return syscall(SYS_shutdown, fd, how, 0, 0, 0, 0);
}
diff --git a/fusl/src/network/socket.c b/fusl/src/network/socket.c
index ec5fb90..95f37a7 100644
--- a/fusl/src/network/socket.c
+++ b/fusl/src/network/socket.c
@@ -4,11 +4,11 @@
#include "syscall.h"
int socket(int domain, int type, int protocol) {
- int s = socketcall(socket, domain, type, protocol, 0, 0, 0);
+ int s = syscall(SYS_socket, domain, type, protocol, 0, 0, 0);
if (s < 0 && (errno == EINVAL || errno == EPROTONOSUPPORT) &&
(type & (SOCK_CLOEXEC | SOCK_NONBLOCK))) {
- s = socketcall(socket, domain, type & ~(SOCK_CLOEXEC | SOCK_NONBLOCK),
- protocol, 0, 0, 0);
+ s = syscall(SYS_socket, domain, type & ~(SOCK_CLOEXEC | SOCK_NONBLOCK),
+ protocol, 0, 0, 0);
if (s < 0)
return s;
if (type & SOCK_CLOEXEC)
diff --git a/fusl/src/network/socketpair.c b/fusl/src/network/socketpair.c
index b2dc231..66e656e 100644
--- a/fusl/src/network/socketpair.c
+++ b/fusl/src/network/socketpair.c
@@ -4,11 +4,11 @@
#include "syscall.h"
int socketpair(int domain, int type, int protocol, int fd[2]) {
- int r = socketcall(socketpair, domain, type, protocol, fd, 0, 0);
+ int r = syscall(SYS_socketpair, domain, type, protocol, fd, 0, 0);
if (r < 0 && (errno == EINVAL || errno == EPROTONOSUPPORT) &&
(type & (SOCK_CLOEXEC | SOCK_NONBLOCK))) {
- r = socketcall(socketpair, domain, type & ~(SOCK_CLOEXEC | SOCK_NONBLOCK),
- protocol, fd, 0, 0);
+ r = syscall(SYS_socketpair, domain, type & ~(SOCK_CLOEXEC | SOCK_NONBLOCK),
+ protocol, fd, 0, 0);
if (r < 0)
return r;
if (type & SOCK_CLOEXEC) {