Skip to content

Commit 05ea58a

Browse files
authored
Use correct data types in syscall layer. NFC (#27108)
Split out from #19559.
1 parent 59151a8 commit 05ea58a

7 files changed

Lines changed: 99 additions & 87 deletions

File tree

src/lib/libsigs.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -231,10 +231,10 @@ sigs = {
231231
__pthread_create_js__sig: 'ipppp',
232232
__resumeException__sig: 'vp',
233233
__syscall_accept4__sig: 'iippiii',
234-
__syscall_bind__sig: 'iippiii',
234+
__syscall_bind__sig: 'iipiiii',
235235
__syscall_chdir__sig: 'ip',
236236
__syscall_chmod__sig: 'ipi',
237-
__syscall_connect__sig: 'iippiii',
237+
__syscall_connect__sig: 'iipiiii',
238238
__syscall_dup__sig: 'ii',
239239
__syscall_dup3__sig: 'iiii',
240240
__syscall_faccessat__sig: 'iipii',
@@ -270,7 +270,7 @@ sigs = {
270270
__syscall_renameat__sig: 'iipip',
271271
__syscall_rmdir__sig: 'ip',
272272
__syscall_sendmsg__sig: 'iipippi',
273-
__syscall_sendto__sig: 'iippipp',
273+
__syscall_sendto__sig: 'iippipi',
274274
__syscall_shutdown__sig: 'iiiiiii',
275275
__syscall_socket__sig: 'iiiiiii',
276276
__syscall_stat64__sig: 'ipp',

system/include/emscripten/syscalls.h

Lines changed: 41 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -7,72 +7,74 @@
77

88
#pragma once
99

10+
#include <poll.h>
1011
#include <stddef.h>
1112
#include <stdint.h>
13+
#include <sys/socket.h>
1214
#include <sys/types.h>
1315

1416
#ifdef __cplusplus
1517
extern "C" {
1618
#endif
1719

1820
int __syscall_chdir(intptr_t path);
19-
int __syscall_mknod(intptr_t path, int mode, int dev);
20-
int __syscall_chmod(intptr_t path, int mode);
21-
int __syscall_getpid(void);
21+
int __syscall_mknod(intptr_t path, mode_t mode, dev_t dev);
22+
int __syscall_chmod(intptr_t path, mode_t mode);
23+
pid_t __syscall_getpid(void);
2224
int __syscall_access(intptr_t path, int amode);
2325
int __syscall_sync(void);
2426
int __syscall_rmdir(intptr_t path);
2527
int __syscall_dup(int fd);
2628
int __syscall_acct(intptr_t filename);
2729
int __syscall_ioctl(int fd, int request, ...);
28-
int __syscall_setpgid(int pid, int gpid);
29-
int __syscall_umask(int mask);
30-
int __syscall_getppid(void);
31-
int __syscall_getpgrp(void);
32-
int __syscall_setsid(void);
30+
int __syscall_setpgid(pid_t pid, pid_t gpid);
31+
mode_t __syscall_umask(mode_t mask);
32+
pid_t __syscall_getppid(void);
33+
pid_t __syscall_getpgrp(void);
34+
pid_t __syscall_setsid(void);
3335
int __syscall_getrusage(int who, intptr_t usage);
3436
int __syscall_munmap(intptr_t addr, size_t len);
35-
int __syscall_fchmod(int fd, int mode);
36-
int __syscall_getpriority(int which, int who);
37-
int __syscall_setpriority(int which, int who, int prio);
37+
int __syscall_fchmod(int fd, mode_t mode);
38+
int __syscall_getpriority(int which, id_t who);
39+
int __syscall_setpriority(int which, id_t who, int prio);
3840
int __syscall_socketcall(int call, intptr_t args);
39-
int __syscall_wait4(int pid, intptr_t wstatus, int options, int rusage);
41+
pid_t __syscall_wait4(pid_t pid, intptr_t wstatus, int options, int rusage);
4042
int __syscall_setdomainname(intptr_t name, size_t size);
4143
int __syscall_uname(intptr_t buf);
4244
int __syscall_mprotect(size_t addr, size_t len, int prot);
43-
int __syscall_getpgid(int pid);
45+
pid_t __syscall_getpgid(pid_t pid);
4446
int __syscall_fchdir(int fd);
4547
int __syscall_msync(intptr_t addr, size_t len, int flags);
46-
int __syscall_getsid(int pid);
48+
pid_t __syscall_getsid(pid_t pid);
4749
int __syscall_fdatasync(int fd);
4850
int __syscall_mlock(intptr_t addr, size_t len);
4951
int __syscall_munlock(intptr_t addr, size_t len);
5052
int __syscall_mlockall(int flags);
5153
int __syscall_munlockall(void);
5254
int __syscall_mremap(intptr_t old_addr, size_t old_size, size_t new_size, int flags, intptr_t new_addr);
53-
int __syscall_poll(intptr_t fds, int nfds, int timeout);
54-
int __syscall_poll_nonblocking(intptr_t fds, int nfds);
55+
int __syscall_poll(intptr_t fds, nfds_t nfds, int timeout);
56+
int __syscall_poll_nonblocking(intptr_t fds, nfds_t nfds);
5557
int __syscall_getcwd(intptr_t buf, size_t size);
5658
intptr_t __syscall_mmap2(intptr_t addr, size_t len, int prot, int flags, int fd, off_t offset);
5759
int __syscall_truncate64(intptr_t path, off_t length);
5860
int __syscall_ftruncate64(int fd, off_t length);
5961
int __syscall_stat64(intptr_t path, intptr_t buf);
6062
int __syscall_lstat64(intptr_t path, intptr_t buf);
6163
int __syscall_fstat64(int fd, intptr_t buf);
62-
int __syscall_getuid32(void);
63-
int __syscall_getgid32(void);
64-
int __syscall_geteuid32(void);
65-
int __syscall_getegid32(void);
66-
int __syscall_setreuid32(int ruid, int euid);
67-
int __syscall_setregid32(int rgid, int egid);
68-
int __syscall_getgroups32(int size, intptr_t list);
69-
int __syscall_fchown32(int fd, int owner, int group);
70-
int __syscall_setresuid32(int ruid, int euid, int suid);
64+
uid_t __syscall_getuid32(void);
65+
gid_t __syscall_getgid32(void);
66+
uid_t __syscall_geteuid32(void);
67+
gid_t __syscall_getegid32(void);
68+
int __syscall_setreuid32(uid_t ruid, uid_t euid);
69+
int __syscall_setregid32(gid_t rgid, gid_t egid);
70+
int __syscall_getgroups32(int count, intptr_t list);
71+
int __syscall_fchown32(int fd, uid_t owner, gid_t group);
72+
int __syscall_setresuid32(uid_t ruid, uid_t euid, uid_t suid);
7173
int __syscall_getresuid32(intptr_t ruid, intptr_t euid, intptr_t suid);
72-
int __syscall_setresgid32(int rgid, int egid, int sgid);
74+
int __syscall_setresgid32(gid_t rgid, gid_t egid, gid_t sgid);
7375
int __syscall_getresgid32(intptr_t rgid, intptr_t egid, intptr_t sgid);
74-
int __syscall_setuid32(int uid);
75-
int __syscall_setgid32(int uid);
76+
int __syscall_setuid32(uid_t uid);
77+
int __syscall_setgid32(gid_t gid);
7678
int __syscall_mincore(intptr_t addr, size_t length, intptr_t vec);
7779
int __syscall_madvise(intptr_t addr, size_t length, int advice);
7880
int __syscall_getdents64(int fd, intptr_t dirp, size_t count);
@@ -81,35 +83,35 @@ int __syscall_statfs64(intptr_t path, size_t size, intptr_t buf);
8183
int __syscall_fstatfs64(int fd, size_t size, intptr_t buf);
8284
int __syscall_fadvise64(int fd, off_t offset, off_t length, int advice);
8385
int __syscall_openat(int dirfd, intptr_t path, int flags, ...); // mode is optional
84-
int __syscall_mkdirat(int dirfd, intptr_t path, int mode);
85-
int __syscall_mknodat(int dirfd, intptr_t path, int mode, int dev);
86-
int __syscall_fchownat(int dirfd, intptr_t path, int owner, int group, int flags);
86+
int __syscall_mkdirat(int dirfd, intptr_t path, mode_t mode);
87+
int __syscall_mknodat(int dirfd, intptr_t path, mode_t mode, dev_t dev);
88+
int __syscall_fchownat(int dirfd, intptr_t path, uid_t owner, gid_t group, int flags);
8789
int __syscall_newfstatat(int dirfd, intptr_t path, intptr_t buf, int flags);
8890
int __syscall_unlinkat(int dirfd, intptr_t path, int flags);
8991
int __syscall_renameat(int olddirfd, intptr_t oldpath, int newdirfd, intptr_t newpath);
9092
int __syscall_linkat(int olddirfd, intptr_t oldpath, int newdirfd, intptr_t newpath, int flags);
9193
int __syscall_symlinkat(intptr_t target, int newdirfd, intptr_t linkpath);
9294
int __syscall_readlinkat(int dirfd, intptr_t path, intptr_t buf, size_t bufsize);
93-
int __syscall_fchmodat2(int dirfd, intptr_t path, int mode, int flags);
95+
int __syscall_fchmodat2(int dirfd, intptr_t path, mode_t mode, int flags);
9496
int __syscall_faccessat(int dirfd, intptr_t path, int amode, int flags);
9597
int __syscall_utimensat(int dirfd, intptr_t path, intptr_t times, int flags);
9698
int __syscall_fallocate(int fd, int mode, off_t offset, off_t len);
9799
int __syscall_dup3(int fd, int suggestfd, int flags);
98100
int __syscall_pipe2(intptr_t fds, int flags);
99-
int __syscall_recvmmsg(int sockfd, intptr_t msgvec, size_t vlen, int flags, ...);
100-
int __syscall_prlimit64(int pid, int resource, intptr_t new_limit, intptr_t old_limit);
101-
int __syscall_sendmmsg(int sockfd, intptr_t msgvec, size_t vlen, int flags, ...);
101+
int __syscall_recvmmsg(int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, ...);
102+
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, ...);
102104
int __syscall_socket(int domain, int type, int protocol, int dummy1, int dummy2, int dummy3);
103105
int __syscall_socketpair(int domain, int type, int protocol, intptr_t fds, int dummy, int dummy2);
104-
int __syscall_bind(int sockfd, intptr_t addr, size_t alen, int dummy, int dummy2, int dummy3);
105-
int __syscall_connect(int sockfd, intptr_t addr, size_t len, int dummy, int dummy2, int dummy3);
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);
106108
int __syscall_listen(int sockfd, int backlog, int dummy1, int dummy2, int dummy3, int dummy4);
107109
int __syscall_accept4(int sockfd, intptr_t addr, intptr_t addrlen, int flags, int dummy1, int dummy2);
108110
int __syscall_getsockopt(int sockfd, int level, int optname, intptr_t optval, intptr_t optlen, int dummy);
109-
int __syscall_setsockopt(int sockfd, int level, int optname, intptr_t optval, size_t optlen, int dummy);
111+
int __syscall_setsockopt(int sockfd, int level, int optname, intptr_t optval, socklen_t optlen, int dummy);
110112
int __syscall_getsockname(int sockfd, intptr_t addr, intptr_t len, int dummy, int dummy2, int dummy3);
111113
int __syscall_getpeername(int sockfd, intptr_t addr, intptr_t len, int dummy, int dummy2, int dummy3);
112-
int __syscall_sendto(int sockfd, intptr_t msg, size_t len, int flags, intptr_t addr, size_t alen);
114+
int __syscall_sendto(int sockfd, intptr_t msg, size_t len, int flags, intptr_t addr, socklen_t alen);
113115
int __syscall_sendmsg(int sockfd, intptr_t msg , int flags, intptr_t addr, size_t alen, int dummy);
114116
int __syscall_recvfrom(int sockfd, intptr_t msg, size_t len, int flags, intptr_t addr, intptr_t alen);
115117
int __syscall_recvmsg(int sockfd, intptr_t msg, int flags, int dummy, int dummy2, int dummy3);

system/lib/libc/emscripten_syscall_stubs.c

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
#include <emscripten/version.h>
2626
#include <emscripten/stack.h>
2727

28-
static int g_pid = 42;
29-
static int g_pgid = 42;
30-
static int g_ppid = 1;
31-
static int g_sid = 42;
28+
static pid_t g_pid = 42;
29+
static pid_t g_pgid = 42;
30+
static pid_t g_ppid = 1;
31+
static pid_t g_sid = 42;
3232

3333
#ifdef NDEBUG
3434
#define REPORT(name)
@@ -68,7 +68,7 @@ weak int __syscall_uname(intptr_t buf) {
6868
return 0;
6969
}
7070

71-
weak int __syscall_setpgid(int pid, int pgid) {
71+
weak int __syscall_setpgid(pid_t pid, pid_t pgid) {
7272
if (pid && pid != g_pid) {
7373
return -ESRCH;
7474
}
@@ -82,41 +82,41 @@ weak int __syscall_sync() {
8282
return 0;
8383
}
8484

85-
weak int __syscall_getsid(int pid) {
85+
weak pid_t __syscall_getsid(pid_t pid) {
8686
if (pid && pid != g_pid) {
8787
return -ESRCH;
8888
}
8989
return g_sid;
9090
}
9191

92-
weak int __syscall_getpgid(int pid) {
92+
weak pid_t __syscall_getpgid(pid_t pid) {
9393
if (pid && pid != g_pid) {
9494
return -ESRCH;
9595
}
9696
return g_pgid;
9797
}
9898

99-
weak int __syscall_getpid() {
99+
weak pid_t __syscall_getpid() {
100100
return g_pid;
101101
}
102102

103-
weak int __syscall_getppid() {
103+
weak pid_t __syscall_getppid() {
104104
return g_ppid;
105105
}
106106

107107
weak int __syscall_linkat(int olddirfd, intptr_t oldpath, int newdirfd, intptr_t newpath, int flags) {
108108
return -EMLINK; // no hardlinks for us
109109
}
110110

111-
weak int __syscall_getgroups32(int size, intptr_t list) {
112-
if (size < 1) {
111+
weak int __syscall_getgroups32(int count, intptr_t list) {
112+
if (count < 1) {
113113
return -EINVAL;
114114
}
115115
((gid_t*)list)[0] = 0;
116116
return 1;
117117
}
118118

119-
weak int __syscall_setsid() {
119+
weak pid_t __syscall_setsid() {
120120
return 0; // no-op
121121
}
122122

@@ -137,31 +137,31 @@ weak int __syscall_getrusage(int who, intptr_t usage) {
137137
return 0;
138138
}
139139

140-
weak int __syscall_getpriority(int which, int who) {
140+
weak int __syscall_getpriority(int which, id_t who) {
141141
return 0;
142142
}
143143

144-
weak int __syscall_setpriority(int which, int who, int prio) {
144+
weak int __syscall_setpriority(int which, id_t who, int prio) {
145145
return -EPERM;
146146
}
147147

148148
weak int __syscall_setdomainname(intptr_t name, size_t size) {
149149
return -EPERM;
150150
}
151151

152-
weak int __syscall_getuid32(void) {
152+
weak uid_t __syscall_getuid32(void) {
153153
return 0;
154154
}
155155

156-
weak int __syscall_getgid32(void) {
156+
weak gid_t __syscall_getgid32(void) {
157157
return 0;
158158
}
159159

160-
weak int __syscall_geteuid32(void) {
160+
weak uid_t __syscall_geteuid32(void) {
161161
return 0;
162162
}
163163

164-
weak int __syscall_getegid32(void) {
164+
weak gid_t __syscall_getegid32(void) {
165165
return 0;
166166
}
167167

@@ -221,7 +221,7 @@ weak int __syscall_munlockall() {
221221
return 0;
222222
}
223223

224-
weak int __syscall_prlimit64(int pid, int resource, intptr_t new_limit, intptr_t old_limit) {
224+
weak int __syscall_prlimit64(pid_t pid, int resource, intptr_t new_limit, intptr_t old_limit) {
225225
REPORT(prlimit64);
226226
struct rlimit *old = (struct rlimit *)old_limit;
227227
if (new_limit) {
@@ -248,15 +248,19 @@ weak int __syscall_prlimit64(int pid, int resource, intptr_t new_limit, intptr_t
248248
return 0;
249249
}
250250

251-
weak int __syscall_setsockopt(int sockfd, int level, int optname, intptr_t optval, size_t optlen, int dummy) {
251+
weak int __syscall_setsockopt(int sockfd, int level, int optname, intptr_t optval, socklen_t optlen, int dummy) {
252252
REPORT(setsockopt);
253253
return -ENOPROTOOPT; // The option is unknown at the level indicated.
254254
}
255255

256+
weak pid_t __syscall_wait4(pid_t pid, intptr_t wstatus, int options, int rusage) {
257+
REPORT(wait4);
258+
return -1;
259+
}
260+
256261
UNIMPLEMENTED(acct, (intptr_t filename))
257262
UNIMPLEMENTED(mincore, (intptr_t addr, size_t length, intptr_t vec))
258-
UNIMPLEMENTED(recvmmsg, (int sockfd, intptr_t msgvec, size_t vlen, int flags, ...))
259-
UNIMPLEMENTED(sendmmsg, (int sockfd, intptr_t msgvec, size_t vlen, int flags, ...))
263+
UNIMPLEMENTED(recvmmsg, (int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, ...))
264+
UNIMPLEMENTED(sendmmsg, (int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, ...))
260265
UNIMPLEMENTED(shutdown, (int sockfd, int how, int dummy, int dummy2, int dummy3, int dummy4))
261266
UNIMPLEMENTED(socketpair, (int domain, int type, int protocol, intptr_t fds, int dummy, int dummy2))
262-
UNIMPLEMENTED(wait4,(int pid, intptr_t wstatus, int options, int rusage))

system/lib/standalone/standalone.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,11 @@ weak int _munmap_js(
6666
return -ENOSYS;
6767
}
6868

69-
weak int __syscall_poll(intptr_t fds, int nfds, int timeout) {
69+
weak int __syscall_poll(intptr_t fds, nfds_t nfds, int timeout) {
7070
return -ENOSYS;
7171
}
7272

73-
weak int __syscall_poll_nonblocking(intptr_t fds, int nfds) {
73+
weak int __syscall_poll_nonblocking(intptr_t fds, nfds_t nfds) {
7474
return -ENOSYS;
7575
}
7676

@@ -111,7 +111,7 @@ weak int __syscall_dup(int fd) {
111111
return -ENOSYS;
112112
}
113113

114-
weak int __syscall_mkdirat(int dirfd, intptr_t path, int mode) {
114+
weak int __syscall_mkdirat(int dirfd, intptr_t path, mode_t mode) {
115115
return -ENOSYS;
116116
}
117117

system/lib/wasmfs/js_api.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ int _wasmfs_write_file(const char* pathname, const uint8_t* data, size_t data_si
114114
return data_size;
115115
}
116116

117-
int _wasmfs_mkdir(const char* path, int mode) {
117+
int _wasmfs_mkdir(const char* path, mode_t mode) {
118118
return __syscall_mkdirat(AT_FDCWD, (intptr_t)path, mode);
119119
}
120120

0 commit comments

Comments
 (0)