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