Skip to content

Commit d4ac893

Browse files
committed
Use varargs in internal socket syscall layer. NFC
1 parent 200c5a8 commit d4ac893

File tree

5 files changed

+68
-68
lines changed

5 files changed

+68
-68
lines changed

src/lib/libsigs.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -230,11 +230,11 @@ sigs = {
230230
__pthread_create_js__sig: 'ipppp',
231231
__resumeException__sig: 'vp',
232232
__syscall__newselect__sig: 'iipppp',
233-
__syscall_accept4__sig: 'iippiii',
234-
__syscall_bind__sig: 'iippiii',
233+
__syscall_accept4__sig: 'iippip',
234+
__syscall_bind__sig: 'iipip',
235235
__syscall_chdir__sig: 'ip',
236236
__syscall_chmod__sig: 'ipi',
237-
__syscall_connect__sig: 'iippiii',
237+
__syscall_connect__sig: 'iipip',
238238
__syscall_dup__sig: 'ii',
239239
__syscall_dup3__sig: 'iiii',
240240
__syscall_faccessat__sig: 'iipii',
@@ -252,27 +252,27 @@ sigs = {
252252
__syscall_ftruncate64__sig: 'iij',
253253
__syscall_getcwd__sig: 'ipp',
254254
__syscall_getdents64__sig: 'iipp',
255-
__syscall_getpeername__sig: 'iippiii',
256-
__syscall_getsockname__sig: 'iippiii',
257-
__syscall_getsockopt__sig: 'iiiippi',
255+
__syscall_getpeername__sig: 'iippp',
256+
__syscall_getsockname__sig: 'iippp',
257+
__syscall_getsockopt__sig: 'iiiippp',
258258
__syscall_ioctl__sig: 'iiip',
259-
__syscall_listen__sig: 'iiiiiii',
259+
__syscall_listen__sig: 'iiip',
260260
__syscall_lstat64__sig: 'ipp',
261261
__syscall_mkdirat__sig: 'iipi',
262262
__syscall_mknodat__sig: 'iipii',
263263
__syscall_newfstatat__sig: 'iippi',
264264
__syscall_openat__sig: 'iipip',
265265
__syscall_pipe__sig: 'ip',
266-
__syscall_poll__sig: 'ipii',
266+
__syscall_poll__sig: 'ippi',
267267
__syscall_readlinkat__sig: 'iippp',
268-
__syscall_recvfrom__sig: 'iippipp',
269-
__syscall_recvmsg__sig: 'iipiiii',
268+
__syscall_recvfrom__sig: 'pippipp',
269+
__syscall_recvmsg__sig: 'pipip',
270270
__syscall_renameat__sig: 'iipip',
271271
__syscall_rmdir__sig: 'ip',
272-
__syscall_sendmsg__sig: 'iipippi',
273-
__syscall_sendto__sig: 'iippipp',
274-
__syscall_shutdown__sig: 'iiiiiii',
275-
__syscall_socket__sig: 'iiiiiii',
272+
__syscall_sendmsg__sig: 'pipip',
273+
__syscall_sendto__sig: 'pippipi',
274+
__syscall_shutdown__sig: 'iiip',
275+
__syscall_socket__sig: 'iiiip',
276276
__syscall_stat64__sig: 'ipp',
277277
__syscall_statfs64__sig: 'ippp',
278278
__syscall_symlinkat__sig: 'ipip',

src/lib/libsyscall.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -345,15 +345,15 @@ var SyscallsLibrary = {
345345
return info;
346346
},
347347
__syscall_socket__deps: ['$SOCKFS'],
348-
__syscall_socket: (domain, type, protocol) => {
348+
__syscall_socket: (domain, type, protocol, varargs) => {
349349
var sock = SOCKFS.createSocket(domain, type, protocol);
350350
#if ASSERTIONS
351351
assert(sock.stream.fd < 64); // XXX ? select() assumes socket fd values are in 0..63
352352
#endif
353353
return sock.stream.fd;
354354
},
355355
__syscall_getsockname__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
356-
__syscall_getsockname: (fd, addr, addrlen, d1, d2, d3) => {
356+
__syscall_getsockname: (fd, addr, addrlen, varargs) => {
357357
var sock = getSocketFromFD(fd);
358358
// TODO: sock.saddr should never be undefined, see TODO in websocket_sock_ops.getname
359359
var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.saddr || '0.0.0.0'), sock.sport, addrlen);
@@ -363,7 +363,7 @@ var SyscallsLibrary = {
363363
return 0;
364364
},
365365
__syscall_getpeername__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
366-
__syscall_getpeername: (fd, addr, addrlen, d1, d2, d3) => {
366+
__syscall_getpeername: (fd, addr, addrlen, varargs) => {
367367
var sock = getSocketFromFD(fd);
368368
if (!sock.daddr) {
369369
return -{{{ cDefs.ENOTCONN }}}; // The socket is not connected.
@@ -375,19 +375,19 @@ var SyscallsLibrary = {
375375
return 0;
376376
},
377377
__syscall_connect__deps: ['$getSocketFromFD', '$getSocketAddress'],
378-
__syscall_connect: (fd, addr, addrlen, d1, d2, d3) => {
378+
__syscall_connect: (fd, addr, addrlen, varargs) => {
379379
var sock = getSocketFromFD(fd);
380380
var info = getSocketAddress(addr, addrlen);
381381
sock.sock_ops.connect(sock, info.addr, info.port);
382382
return 0;
383383
},
384384
__syscall_shutdown__deps: ['$getSocketFromFD'],
385-
__syscall_shutdown: (fd, how) => {
385+
__syscall_shutdown: (fd, how, varargs) => {
386386
getSocketFromFD(fd);
387387
return -{{{ cDefs.ENOSYS }}}; // unsupported feature
388388
},
389389
__syscall_accept4__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
390-
__syscall_accept4: (fd, addr, addrlen, flags, d1, d2) => {
390+
__syscall_accept4: (fd, addr, addrlen, flags, varargs) => {
391391
var sock = getSocketFromFD(fd);
392392
var newsock = sock.sock_ops.accept(sock);
393393
if (addr) {
@@ -399,14 +399,14 @@ var SyscallsLibrary = {
399399
return newsock.stream.fd;
400400
},
401401
__syscall_bind__deps: ['$getSocketFromFD', '$getSocketAddress'],
402-
__syscall_bind: (fd, addr, addrlen, d1, d2, d3) => {
402+
__syscall_bind: (fd, addr, addrlen, varargs) => {
403403
var sock = getSocketFromFD(fd);
404404
var info = getSocketAddress(addr, addrlen);
405405
sock.sock_ops.bind(sock, info.addr, info.port);
406406
return 0;
407407
},
408408
__syscall_listen__deps: ['$getSocketFromFD'],
409-
__syscall_listen: (fd, backlog) => {
409+
__syscall_listen: (fd, backlog, varargs) => {
410410
var sock = getSocketFromFD(fd);
411411
sock.sock_ops.listen(sock, backlog);
412412
return 0;
@@ -437,7 +437,7 @@ var SyscallsLibrary = {
437437
return sock.sock_ops.sendmsg(sock, HEAP8, message, length, dest.addr, dest.port);
438438
},
439439
__syscall_getsockopt__deps: ['$getSocketFromFD'],
440-
__syscall_getsockopt: (fd, level, optname, optval, optlen, d1) => {
440+
__syscall_getsockopt: (fd, level, optname, optval, optlen, varargs) => {
441441
var sock = getSocketFromFD(fd);
442442
// Minimal getsockopt aimed at resolving https://github.com/emscripten-core/emscripten/issues/2211
443443
// so only supports SOL_SOCKET with SO_ERROR.
@@ -452,7 +452,7 @@ var SyscallsLibrary = {
452452
return -{{{ cDefs.ENOPROTOOPT }}}; // The option is unknown at the level indicated.
453453
},
454454
__syscall_sendmsg__deps: ['$getSocketFromFD', '$getSocketAddress'],
455-
__syscall_sendmsg: (fd, message, flags, d1, d2, d3) => {
455+
__syscall_sendmsg: (fd, message, flags, varargs) => {
456456
var sock = getSocketFromFD(fd);
457457
var iov = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iov, '*') }}};
458458
var num = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iovlen, 'i32') }}};
@@ -483,7 +483,7 @@ var SyscallsLibrary = {
483483
return sock.sock_ops.sendmsg(sock, view, 0, total, addr, port);
484484
},
485485
__syscall_recvmsg__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
486-
__syscall_recvmsg: (fd, message, flags, d1, d2, d3) => {
486+
__syscall_recvmsg: (fd, message, flags, varargs) => {
487487
var sock = getSocketFromFD(fd);
488488
var iov = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iov, '*') }}};
489489
var num = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iovlen, 'i32') }}};

system/lib/libc/emscripten_syscall_stubs.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ weak int __syscall_prlimit64(pid_t pid, int resource, intptr_t new_limit, intptr
255255
return 0;
256256
}
257257

258-
weak int __syscall_setsockopt(int sockfd, int level, int optname, intptr_t optval, socklen_t optlen, int dummy) {
258+
weak int __syscall_setsockopt(int sockfd, int level, int optname, intptr_t optval, socklen_t optlen, ...) {
259259
REPORT(setsockopt);
260260
return -ENOPROTOOPT; // The option is unknown at the level indicated.
261261
}
@@ -269,7 +269,7 @@ UNIMPLEMENTED(acct, (intptr_t filename))
269269
UNIMPLEMENTED(mincore, (intptr_t addr, size_t length, intptr_t vec))
270270
UNIMPLEMENTED(pipe2, (intptr_t fds, int flags))
271271
UNIMPLEMENTED(pselect6, (int nfds, intptr_t readfds, intptr_t writefds, intptr_t exceptfds, intptr_t timeout, intptr_t sigmaks))
272-
UNIMPLEMENTED(recvmmsg, (int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, ...))
273-
UNIMPLEMENTED(sendmmsg, (int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, ...))
274-
UNIMPLEMENTED(shutdown, (int sockfd, int how, int dummy, int dummy2, int dummy3, int dummy4))
275-
UNIMPLEMENTED(socketpair, (int domain, int type, int protocol, intptr_t fds, int dummy, int dummy2))
272+
UNIMPLEMENTED(recvmmsg, (int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, intptr_t timeout))
273+
UNIMPLEMENTED(sendmmsg, (int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags))
274+
UNIMPLEMENTED(shutdown, (int sockfd, int how, ...))
275+
UNIMPLEMENTED(socketpair, (int domain, int type, int protocol, intptr_t fds, ...))

system/lib/libc/musl/arch/emscripten/syscall_arch.h

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -98,24 +98,25 @@ int __syscall_utimensat(int dirfd, intptr_t path, intptr_t times, int flags);
9898
int __syscall_fallocate(int fd, int mode, off_t offset, off_t len);
9999
int __syscall_dup3(int fd, int suggestfd, int flags);
100100
int __syscall_pipe2(intptr_t fds, int flags);
101-
int __syscall_recvmmsg(int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, ...);
101+
int __syscall_recvmmsg(int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, intptr_t timeout);
102102
int __syscall_prlimit64(pid_t pid, int resource, intptr_t new_limit, intptr_t old_limit);
103-
int __syscall_sendmmsg(int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, ...);
104-
int __syscall_socket(int domain, int type, int protocol, int dummy1, int dummy2, int dummy3);
105-
int __syscall_socketpair(int domain, int type, int protocol, intptr_t fds, int dummy, int dummy2);
106-
int __syscall_bind(int sockfd, intptr_t addr, socklen_t alen, int dummy, int dummy2, int dummy3);
107-
int __syscall_connect(int sockfd, intptr_t addr, socklen_t len, int dummy, int dummy2, int dummy3);
108-
int __syscall_listen(int sockfd, int backlock, int dummy1, int dummy2, int dummy3, int dummy4);
109-
int __syscall_accept4(int sockfd, intptr_t addr, intptr_t addrlen, int flags, int dummy1, int dummy2);
110-
int __syscall_getsockopt(int sockfd, int level, int optname, intptr_t optval, intptr_t optlen, int dummy);
111-
int __syscall_setsockopt(int sockfd, int level, int optname, intptr_t optval, socklen_t optlen, int dummy);
112-
int __syscall_getsockname(int sockfd, intptr_t addr, intptr_t len, int dummy, int dummy2, int dummy3);
113-
int __syscall_getpeername(int sockfd, intptr_t addr, intptr_t len, int dummy, int dummy2, int dummy3);
114-
ssize_t __syscall_sendto(int sockfd, intptr_t msg, size_t len, int flags, intptr_t addr, socklen_t alen);
115-
ssize_t __syscall_sendmsg(int sockfd, intptr_t msg , int flags, intptr_t addr, size_t alen, int dummy);
116-
ssize_t __syscall_recvfrom(int sockfd, intptr_t msg, size_t len, int flags, intptr_t addr, intptr_t alen);
117-
ssize_t __syscall_recvmsg(int sockfd, intptr_t msg, int flags, int dummy, int dummy2, int dummy3);
118-
int __syscall_shutdown(int sockfd, int how, int dummy, int dummy2, int dummy3, int dummy4);
103+
int __syscall_sendmmsg(int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags);
104+
int __syscall_socket(int domain, int type, int protocol, ...);
105+
int __syscall_socketpair(int domain, int type, int protocol, intptr_t fds, ...);
106+
int __syscall_bind(int sockfd, intptr_t addr, socklen_t len, ...);
107+
int __syscall_connect(int sockfd, intptr_t addr, socklen_t len, ...);
108+
int __syscall_listen(int sockfd, int backlog, ...);
109+
int __syscall_accept4(int sockfd, intptr_t addr, intptr_t addrlen, int flags, ...);
110+
int __syscall_getsockopt(int sockfd, int level, int optname, intptr_t optval, intptr_t optlen, ...);
111+
int __syscall_setsockopt(int sockfd, int level, int optname, intptr_t optval, socklen_t optlen, ...);
112+
int __syscall_getsockname(int sockfd, intptr_t addr, intptr_t len, ...);
113+
int __syscall_getpeername(int sockfd, intptr_t addr, intptr_t len, ...);
114+
ssize_t __syscall_sendto(int sockfd, intptr_t buf, size_t len, int flags, intptr_t addr, socklen_t alen);
115+
ssize_t __syscall_sendmsg(int sockfd, intptr_t msg, int flags, ...);
116+
ssize_t __syscall_recvfrom(int sockfd, intptr_t buf, size_t len, int flags, intptr_t addr, intptr_t alen);
117+
ssize_t __syscall_recvmsg(int sockfd, intptr_t msg, int flags, ...);
118+
int __syscall_shutdown(int sockfd, int how, ...);
119+
119120

120121
#ifdef __cplusplus
121122
}

system/lib/wasmfs/syscalls.cpp

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,28 +1695,27 @@ int __syscall_accept4(int sockfd,
16951695
intptr_t addr,
16961696
intptr_t addrlen,
16971697
int flags,
1698-
int dummy1,
1699-
int dummy2) {
1698+
...) {
17001699
return -ENOSYS;
17011700
}
17021701

17031702
int __syscall_bind(
1704-
int sockfd, intptr_t addr, socklen_t alen, int dummy, int dummy2, int dummy3) {
1703+
int sockfd, intptr_t addr, socklen_t alen, ...) {
17051704
return -ENOSYS;
17061705
}
17071706

17081707
int __syscall_connect(
1709-
int sockfd, intptr_t addr, socklen_t len, int dummy, int dummy2, int dummy3) {
1708+
int sockfd, intptr_t addr, socklen_t len, ...) {
17101709
return -ENOSYS;
17111710
}
17121711

17131712
int __syscall_socket(
1714-
int domain, int type, int protocol, int dummy1, int dummy2, int dummy3) {
1713+
int domain, int type, int protocol, ...) {
17151714
return -ENOSYS;
17161715
}
17171716

17181717
int __syscall_listen(
1719-
int sockfd, int backlock, int dummy1, int dummy2, int dummy3, int dummy4) {
1718+
int sockfd, int backlog, ...) {
17201719
return -ENOSYS;
17211720
}
17221721

@@ -1725,41 +1724,41 @@ int __syscall_getsockopt(int sockfd,
17251724
int optname,
17261725
intptr_t optval,
17271726
intptr_t optlen,
1728-
int dummy) {
1727+
...) {
17291728
return -ENOSYS;
17301729
}
17311730

1732-
int __syscall_getsockname(
1733-
int sockfd, intptr_t addr, intptr_t len, int dummy, int dummy2, int dummy3) {
1731+
int __syscall_getsockname(int sockfd, intptr_t addr, intptr_t len, ...) {
17341732
return -ENOSYS;
17351733
}
17361734

1737-
int __syscall_getpeername(
1738-
int sockfd, intptr_t addr, intptr_t len, int dummy, int dummy2, int dummy3) {
1735+
int __syscall_getpeername(int sockfd, intptr_t addr, intptr_t len, ...) {
17391736
return -ENOSYS;
17401737
}
17411738

1742-
ssize_t __syscall_sendto(
1743-
int sockfd, intptr_t msg, size_t len, int flags, intptr_t addr, socklen_t alen) {
1739+
ssize_t __syscall_sendto(int sockfd,
1740+
intptr_t buf,
1741+
size_t len,
1742+
int flags,
1743+
intptr_t addr,
1744+
socklen_t alen) {
17441745
return -ENOSYS;
17451746
}
17461747

1747-
ssize_t __syscall_sendmsg(
1748-
int sockfd, intptr_t msg, int flags, intptr_t addr, size_t alen, int dummy) {
1748+
ssize_t __syscall_sendmsg(int sockfd, intptr_t msg, int flags, ...) {
17491749
return -ENOSYS;
17501750
}
17511751

17521752
ssize_t __syscall_recvfrom(int sockfd,
1753-
intptr_t msg,
1754-
size_t len,
1753+
intptr_t buf,
1754+
size_t len,
17551755
int flags,
1756-
intptr_t addr,
1757-
intptr_t alen) {
1756+
intptr_t addr,
1757+
intptr_t alen) {
17581758
return -ENOSYS;
17591759
}
17601760

1761-
ssize_t __syscall_recvmsg(
1762-
int sockfd, intptr_t msg, int flags, int dummy, int dummy2, int dummy3) {
1761+
ssize_t __syscall_recvmsg(int sockfd, intptr_t msg, int flags, ...) {
17631762
return -ENOSYS;
17641763
}
17651764

0 commit comments

Comments
 (0)