Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/wapython
Path: blob/main/core/kernel/src/wasm/posix/constants.ts
1068 views
1
import debug from "debug";
2
const log = debug("posix:constants");
3
4
// These are purely for typescript, and I can only update this (when the zig code changes)
5
// by just printing out the constants at runtime.
6
const CONSTANTS = [
7
"AT_FDCWD",
8
"E2BIG",
9
"EACCES",
10
"EAGAIN",
11
"EBADF",
12
"EBUSY",
13
"ECHILD",
14
"EDEADLK",
15
"EEXIST",
16
"EFAULT",
17
"EFBIG",
18
"EINTR",
19
"EINVAL",
20
"EIO",
21
"EISDIR",
22
"EMFILE",
23
"EMLINK",
24
"ENFILE",
25
"ENODEV",
26
"ENOENT",
27
"ENOEXEC",
28
"ENOMEM",
29
"ENOSPC",
30
"ENOTDIR",
31
"ENOTTY",
32
"ENXIO",
33
"EPERM",
34
"EPIPE",
35
"EROFS",
36
"ESPIPE",
37
"ESRCH",
38
"ETXTBSY",
39
"EXDEV",
40
"ENOTCONN",
41
"EADDRINUSE",
42
"EADDRNOTAVAIL",
43
"EAFNOSUPPORT",
44
"EALREADY",
45
"ECONNREFUSED",
46
"EFAULT",
47
"EHOSTUNREACH",
48
"EINPROGRESS",
49
"EISCONN",
50
"ENETDOWN",
51
"ENETUNREACH",
52
"ENOBUFS",
53
"ENOTSOCK",
54
"ENOPROTOOPT",
55
"EOPNOTSUPP",
56
"EPROTOTYPE",
57
"ETIMEDOUT",
58
"ECONNRESET",
59
"ELOOP",
60
"ENAMETOOLONG",
61
"SIG_BLOCK",
62
"SIG_UNBLOCK",
63
"SIG_SETMASK",
64
"AF_INET",
65
"AF_INET6",
66
"F_ULOCK",
67
"F_LOCK",
68
"F_TLOCK",
69
"F_TEST",
70
"IFNAMSIZ",
71
"ENOTSUP",
72
"WNOHANG",
73
"WUNTRACED",
74
"MSG_OOB",
75
"MSG_PEEK",
76
"MSG_WAITALL",
77
"MSG_DONTROUTE",
78
"O_CLOEXEC",
79
"O_NONBLOCK",
80
"O_APPEND",
81
"SO_ACCEPTCONN",
82
"SO_ATTACH_BPF",
83
"SO_ATTACH_FILTER",
84
"SO_ATTACH_REUSEPORT_CBPF",
85
"SO_ATTACH_REUSEPORT_EBPF",
86
"SO_BINDTODEVICE",
87
"SO_BINDTOIFINDEX",
88
"SO_BPF_EXTENSIONS",
89
"SO_BROADCAST",
90
"SO_BSDCOMPAT",
91
"SO_BUSY_POLL",
92
"SO_CNX_ADVICE",
93
"SO_COOKIE",
94
"SO_DEBUG",
95
"SO_DETACH_BPF",
96
"SO_DETACH_FILTER",
97
"SO_DETACH_REUSEPORT_BPF",
98
"SO_DOMAIN",
99
"SO_DONTROUTE",
100
"SO_ERROR",
101
"SO_GET_FILTER",
102
"SO_INCOMING_CPU",
103
"SO_INCOMING_NAPI_ID",
104
"SO_KEEPALIVE",
105
"SO_LINGER",
106
"SO_LOCK_FILTER",
107
"SO_MARK",
108
"SO_MAX_PACING_RATE",
109
"SO_MEMINFO",
110
"SO_NOFCS",
111
"SO_NO_CHECK",
112
"SO_OOBINLINE",
113
"SO_PASSCRED",
114
"SO_PASSSEC",
115
"SO_PEEK_OFF",
116
"SO_PEERCRED",
117
"SO_PEERGROUPS",
118
"SO_PEERNAME",
119
"SO_PEERSEC",
120
"SO_PRIORITY",
121
"SO_PROTOCOL",
122
"SO_RCVBUF",
123
"SO_RCVBUFFORCE",
124
"SO_RCVLOWAT",
125
"SO_RCVTIMEO",
126
"SO_REUSEADDR",
127
"SO_REUSEPORT",
128
"SO_RXQ_OVFL",
129
"SO_SECURITY_AUTHENTICATION",
130
"SO_SECURITY_ENCRYPTION_NETWORK",
131
"SO_SECURITY_ENCRYPTION_TRANSPORT",
132
"SO_SELECT_ERR_QUEUE",
133
"SO_SNDBUF",
134
"SO_SNDBUFFORCE",
135
"SO_SNDLOWAT",
136
"SO_SNDTIMEO",
137
"SO_TIMESTAMP",
138
"SO_TIMESTAMPING",
139
"SO_TIMESTAMPNS",
140
"SO_TXTIME",
141
"SO_TYPE",
142
"SO_WIFI_STATUS",
143
"SO_ZEROCOPY",
144
"SOL_SOCKET",
145
"POLLIN",
146
"POLLOUT",
147
] as const;
148
149
export type Constant = typeof CONSTANTS[number];
150
151
const constants: { [name: string]: number } = {};
152
export default constants;
153
154
function recvJsonObject({ callFunction, recv }, name: string) {
155
let ptr = callFunction(name);
156
if (ptr == 0) {
157
throw Error("unable to receive JSON object");
158
}
159
return JSON.parse(recv.string(ptr));
160
}
161
162
export function initConstants(context) {
163
const { names, values } = recvJsonObject(context, "getConstants");
164
for (let i = 0; i < names.length; i++) {
165
constants[names[i]] = values[i];
166
}
167
log(constants);
168
}
169
170