github.com/gidoBOSSftw5731/go/src@v0.0.0-20210226122457-d24b0edbf019/syscall/tables_js.go (about) 1 // Copyright 2013 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 //go:build js && wasm 6 // +build js,wasm 7 8 package syscall 9 10 import "runtime" 11 12 // These were originally used by Nacl, then later also used by 13 // js/wasm. Now that they're only used by js/wasm, these numbers are 14 // just arbitrary. 15 // 16 // TODO: delete? replace with something meaningful? 17 const ( 18 sys_null = 1 19 sys_nameservice = 2 20 sys_dup = 8 21 sys_dup2 = 9 22 sys_open = 10 23 sys_close = 11 24 sys_read = 12 25 sys_write = 13 26 sys_lseek = 14 27 sys_stat = 16 28 sys_fstat = 17 29 sys_chmod = 18 30 sys_isatty = 19 31 sys_brk = 20 32 sys_mmap = 21 33 sys_munmap = 22 34 sys_getdents = 23 35 sys_mprotect = 24 36 sys_list_mappings = 25 37 sys_exit = 30 38 sys_getpid = 31 39 sys_sched_yield = 32 40 sys_sysconf = 33 41 sys_gettimeofday = 40 42 sys_clock = 41 43 sys_nanosleep = 42 44 sys_clock_getres = 43 45 sys_clock_gettime = 44 46 sys_mkdir = 45 47 sys_rmdir = 46 48 sys_chdir = 47 49 sys_getcwd = 48 50 sys_unlink = 49 51 sys_imc_makeboundsock = 60 52 sys_imc_accept = 61 53 sys_imc_connect = 62 54 sys_imc_sendmsg = 63 55 sys_imc_recvmsg = 64 56 sys_imc_mem_obj_create = 65 57 sys_imc_socketpair = 66 58 sys_mutex_create = 70 59 sys_mutex_lock = 71 60 sys_mutex_trylock = 72 61 sys_mutex_unlock = 73 62 sys_cond_create = 74 63 sys_cond_wait = 75 64 sys_cond_signal = 76 65 sys_cond_broadcast = 77 66 sys_cond_timed_wait_abs = 79 67 sys_thread_create = 80 68 sys_thread_exit = 81 69 sys_tls_init = 82 70 sys_thread_nice = 83 71 sys_tls_get = 84 72 sys_second_tls_set = 85 73 sys_second_tls_get = 86 74 sys_exception_handler = 87 75 sys_exception_stack = 88 76 sys_exception_clear_flag = 89 77 sys_sem_create = 100 78 sys_sem_wait = 101 79 sys_sem_post = 102 80 sys_sem_get_value = 103 81 sys_dyncode_create = 104 82 sys_dyncode_modify = 105 83 sys_dyncode_delete = 106 84 sys_test_infoleak = 109 85 sys_test_crash = 110 86 sys_test_syscall_1 = 111 87 sys_test_syscall_2 = 112 88 sys_futex_wait_abs = 120 89 sys_futex_wake = 121 90 sys_pread = 130 91 sys_pwrite = 131 92 sys_truncate = 140 93 sys_lstat = 141 94 sys_link = 142 95 sys_rename = 143 96 sys_symlink = 144 97 sys_access = 145 98 sys_readlink = 146 99 sys_utimes = 147 100 sys_get_random_bytes = 150 101 ) 102 103 // TODO: Auto-generate some day. (Hard-coded in binaries so not likely to change.) 104 const ( 105 // native_client/src/trusted/service_runtime/include/sys/errno.h 106 // The errors are mainly copied from Linux. 107 EPERM Errno = 1 /* Operation not permitted */ 108 ENOENT Errno = 2 /* No such file or directory */ 109 ESRCH Errno = 3 /* No such process */ 110 EINTR Errno = 4 /* Interrupted system call */ 111 EIO Errno = 5 /* I/O error */ 112 ENXIO Errno = 6 /* No such device or address */ 113 E2BIG Errno = 7 /* Argument list too long */ 114 ENOEXEC Errno = 8 /* Exec format error */ 115 EBADF Errno = 9 /* Bad file number */ 116 ECHILD Errno = 10 /* No child processes */ 117 EAGAIN Errno = 11 /* Try again */ 118 ENOMEM Errno = 12 /* Out of memory */ 119 EACCES Errno = 13 /* Permission denied */ 120 EFAULT Errno = 14 /* Bad address */ 121 EBUSY Errno = 16 /* Device or resource busy */ 122 EEXIST Errno = 17 /* File exists */ 123 EXDEV Errno = 18 /* Cross-device link */ 124 ENODEV Errno = 19 /* No such device */ 125 ENOTDIR Errno = 20 /* Not a directory */ 126 EISDIR Errno = 21 /* Is a directory */ 127 EINVAL Errno = 22 /* Invalid argument */ 128 ENFILE Errno = 23 /* File table overflow */ 129 EMFILE Errno = 24 /* Too many open files */ 130 ENOTTY Errno = 25 /* Not a typewriter */ 131 EFBIG Errno = 27 /* File too large */ 132 ENOSPC Errno = 28 /* No space left on device */ 133 ESPIPE Errno = 29 /* Illegal seek */ 134 EROFS Errno = 30 /* Read-only file system */ 135 EMLINK Errno = 31 /* Too many links */ 136 EPIPE Errno = 32 /* Broken pipe */ 137 ENAMETOOLONG Errno = 36 /* File name too long */ 138 ENOSYS Errno = 38 /* Function not implemented */ 139 EDQUOT Errno = 122 /* Quota exceeded */ 140 EDOM Errno = 33 /* Math arg out of domain of func */ 141 ERANGE Errno = 34 /* Math result not representable */ 142 EDEADLK Errno = 35 /* Deadlock condition */ 143 ENOLCK Errno = 37 /* No record locks available */ 144 ENOTEMPTY Errno = 39 /* Directory not empty */ 145 ELOOP Errno = 40 /* Too many symbolic links */ 146 ENOMSG Errno = 42 /* No message of desired type */ 147 EIDRM Errno = 43 /* Identifier removed */ 148 ECHRNG Errno = 44 /* Channel number out of range */ 149 EL2NSYNC Errno = 45 /* Level 2 not synchronized */ 150 EL3HLT Errno = 46 /* Level 3 halted */ 151 EL3RST Errno = 47 /* Level 3 reset */ 152 ELNRNG Errno = 48 /* Link number out of range */ 153 EUNATCH Errno = 49 /* Protocol driver not attached */ 154 ENOCSI Errno = 50 /* No CSI structure available */ 155 EL2HLT Errno = 51 /* Level 2 halted */ 156 EBADE Errno = 52 /* Invalid exchange */ 157 EBADR Errno = 53 /* Invalid request descriptor */ 158 EXFULL Errno = 54 /* Exchange full */ 159 ENOANO Errno = 55 /* No anode */ 160 EBADRQC Errno = 56 /* Invalid request code */ 161 EBADSLT Errno = 57 /* Invalid slot */ 162 EDEADLOCK Errno = EDEADLK /* File locking deadlock error */ 163 EBFONT Errno = 59 /* Bad font file fmt */ 164 ENOSTR Errno = 60 /* Device not a stream */ 165 ENODATA Errno = 61 /* No data (for no delay io) */ 166 ETIME Errno = 62 /* Timer expired */ 167 ENOSR Errno = 63 /* Out of streams resources */ 168 ENONET Errno = 64 /* Machine is not on the network */ 169 ENOPKG Errno = 65 /* Package not installed */ 170 EREMOTE Errno = 66 /* The object is remote */ 171 ENOLINK Errno = 67 /* The link has been severed */ 172 EADV Errno = 68 /* Advertise error */ 173 ESRMNT Errno = 69 /* Srmount error */ 174 ECOMM Errno = 70 /* Communication error on send */ 175 EPROTO Errno = 71 /* Protocol error */ 176 EMULTIHOP Errno = 72 /* Multihop attempted */ 177 EDOTDOT Errno = 73 /* Cross mount point (not really error) */ 178 EBADMSG Errno = 74 /* Trying to read unreadable message */ 179 EOVERFLOW Errno = 75 /* Value too large for defined data type */ 180 ENOTUNIQ Errno = 76 /* Given log. name not unique */ 181 EBADFD Errno = 77 /* f.d. invalid for this operation */ 182 EREMCHG Errno = 78 /* Remote address changed */ 183 ELIBACC Errno = 79 /* Can't access a needed shared lib */ 184 ELIBBAD Errno = 80 /* Accessing a corrupted shared lib */ 185 ELIBSCN Errno = 81 /* .lib section in a.out corrupted */ 186 ELIBMAX Errno = 82 /* Attempting to link in too many libs */ 187 ELIBEXEC Errno = 83 /* Attempting to exec a shared library */ 188 EILSEQ Errno = 84 189 EUSERS Errno = 87 190 ENOTSOCK Errno = 88 /* Socket operation on non-socket */ 191 EDESTADDRREQ Errno = 89 /* Destination address required */ 192 EMSGSIZE Errno = 90 /* Message too long */ 193 EPROTOTYPE Errno = 91 /* Protocol wrong type for socket */ 194 ENOPROTOOPT Errno = 92 /* Protocol not available */ 195 EPROTONOSUPPORT Errno = 93 /* Unknown protocol */ 196 ESOCKTNOSUPPORT Errno = 94 /* Socket type not supported */ 197 EOPNOTSUPP Errno = 95 /* Operation not supported on transport endpoint */ 198 EPFNOSUPPORT Errno = 96 /* Protocol family not supported */ 199 EAFNOSUPPORT Errno = 97 /* Address family not supported by protocol family */ 200 EADDRINUSE Errno = 98 /* Address already in use */ 201 EADDRNOTAVAIL Errno = 99 /* Address not available */ 202 ENETDOWN Errno = 100 /* Network interface is not configured */ 203 ENETUNREACH Errno = 101 /* Network is unreachable */ 204 ENETRESET Errno = 102 205 ECONNABORTED Errno = 103 /* Connection aborted */ 206 ECONNRESET Errno = 104 /* Connection reset by peer */ 207 ENOBUFS Errno = 105 /* No buffer space available */ 208 EISCONN Errno = 106 /* Socket is already connected */ 209 ENOTCONN Errno = 107 /* Socket is not connected */ 210 ESHUTDOWN Errno = 108 /* Can't send after socket shutdown */ 211 ETOOMANYREFS Errno = 109 212 ETIMEDOUT Errno = 110 /* Connection timed out */ 213 ECONNREFUSED Errno = 111 /* Connection refused */ 214 EHOSTDOWN Errno = 112 /* Host is down */ 215 EHOSTUNREACH Errno = 113 /* Host is unreachable */ 216 EALREADY Errno = 114 /* Socket already connected */ 217 EINPROGRESS Errno = 115 /* Connection already in progress */ 218 ESTALE Errno = 116 219 ENOTSUP Errno = EOPNOTSUPP /* Not supported */ 220 ENOMEDIUM Errno = 123 /* No medium (in tape drive) */ 221 ECANCELED Errno = 125 /* Operation canceled. */ 222 ELBIN Errno = 2048 /* Inode is remote (not really error) */ 223 EFTYPE Errno = 2049 /* Inappropriate file type or format */ 224 ENMFILE Errno = 2050 /* No more files */ 225 EPROCLIM Errno = 2051 226 ENOSHARE Errno = 2052 /* No such host or network path */ 227 ECASECLASH Errno = 2053 /* Filename exists with different case */ 228 EWOULDBLOCK Errno = EAGAIN /* Operation would block */ 229 ) 230 231 // TODO: Auto-generate some day. (Hard-coded in binaries so not likely to change.) 232 var errorstr = [...]string{ 233 EPERM: "Operation not permitted", 234 ENOENT: "No such file or directory", 235 ESRCH: "No such process", 236 EINTR: "Interrupted system call", 237 EIO: "I/O error", 238 ENXIO: "No such device or address", 239 E2BIG: "Argument list too long", 240 ENOEXEC: "Exec format error", 241 EBADF: "Bad file number", 242 ECHILD: "No child processes", 243 EAGAIN: "Try again", 244 ENOMEM: "Out of memory", 245 EACCES: "Permission denied", 246 EFAULT: "Bad address", 247 EBUSY: "Device or resource busy", 248 EEXIST: "File exists", 249 EXDEV: "Cross-device link", 250 ENODEV: "No such device", 251 ENOTDIR: "Not a directory", 252 EISDIR: "Is a directory", 253 EINVAL: "Invalid argument", 254 ENFILE: "File table overflow", 255 EMFILE: "Too many open files", 256 ENOTTY: "Not a typewriter", 257 EFBIG: "File too large", 258 ENOSPC: "No space left on device", 259 ESPIPE: "Illegal seek", 260 EROFS: "Read-only file system", 261 EMLINK: "Too many links", 262 EPIPE: "Broken pipe", 263 ENAMETOOLONG: "File name too long", 264 ENOSYS: "not implemented on " + runtime.GOOS, 265 EDQUOT: "Quota exceeded", 266 EDOM: "Math arg out of domain of func", 267 ERANGE: "Math result not representable", 268 EDEADLK: "Deadlock condition", 269 ENOLCK: "No record locks available", 270 ENOTEMPTY: "Directory not empty", 271 ELOOP: "Too many symbolic links", 272 ENOMSG: "No message of desired type", 273 EIDRM: "Identifier removed", 274 ECHRNG: "Channel number out of range", 275 EL2NSYNC: "Level 2 not synchronized", 276 EL3HLT: "Level 3 halted", 277 EL3RST: "Level 3 reset", 278 ELNRNG: "Link number out of range", 279 EUNATCH: "Protocol driver not attached", 280 ENOCSI: "No CSI structure available", 281 EL2HLT: "Level 2 halted", 282 EBADE: "Invalid exchange", 283 EBADR: "Invalid request descriptor", 284 EXFULL: "Exchange full", 285 ENOANO: "No anode", 286 EBADRQC: "Invalid request code", 287 EBADSLT: "Invalid slot", 288 EBFONT: "Bad font file fmt", 289 ENOSTR: "Device not a stream", 290 ENODATA: "No data (for no delay io)", 291 ETIME: "Timer expired", 292 ENOSR: "Out of streams resources", 293 ENONET: "Machine is not on the network", 294 ENOPKG: "Package not installed", 295 EREMOTE: "The object is remote", 296 ENOLINK: "The link has been severed", 297 EADV: "Advertise error", 298 ESRMNT: "Srmount error", 299 ECOMM: "Communication error on send", 300 EPROTO: "Protocol error", 301 EMULTIHOP: "Multihop attempted", 302 EDOTDOT: "Cross mount point (not really error)", 303 EBADMSG: "Trying to read unreadable message", 304 EOVERFLOW: "Value too large for defined data type", 305 ENOTUNIQ: "Given log. name not unique", 306 EBADFD: "f.d. invalid for this operation", 307 EREMCHG: "Remote address changed", 308 ELIBACC: "Can't access a needed shared lib", 309 ELIBBAD: "Accessing a corrupted shared lib", 310 ELIBSCN: ".lib section in a.out corrupted", 311 ELIBMAX: "Attempting to link in too many libs", 312 ELIBEXEC: "Attempting to exec a shared library", 313 ENOTSOCK: "Socket operation on non-socket", 314 EDESTADDRREQ: "Destination address required", 315 EMSGSIZE: "Message too long", 316 EPROTOTYPE: "Protocol wrong type for socket", 317 ENOPROTOOPT: "Protocol not available", 318 EPROTONOSUPPORT: "Unknown protocol", 319 ESOCKTNOSUPPORT: "Socket type not supported", 320 EOPNOTSUPP: "Operation not supported on transport endpoint", 321 EPFNOSUPPORT: "Protocol family not supported", 322 EAFNOSUPPORT: "Address family not supported by protocol family", 323 EADDRINUSE: "Address already in use", 324 EADDRNOTAVAIL: "Address not available", 325 ENETDOWN: "Network interface is not configured", 326 ENETUNREACH: "Network is unreachable", 327 ECONNABORTED: "Connection aborted", 328 ECONNRESET: "Connection reset by peer", 329 ENOBUFS: "No buffer space available", 330 EISCONN: "Socket is already connected", 331 ENOTCONN: "Socket is not connected", 332 ESHUTDOWN: "Can't send after socket shutdown", 333 ETIMEDOUT: "Connection timed out", 334 ECONNREFUSED: "Connection refused", 335 EHOSTDOWN: "Host is down", 336 EHOSTUNREACH: "Host is unreachable", 337 EALREADY: "Socket already connected", 338 EINPROGRESS: "Connection already in progress", 339 ENOMEDIUM: "No medium (in tape drive)", 340 ECANCELED: "Operation canceled.", 341 ELBIN: "Inode is remote (not really error)", 342 EFTYPE: "Inappropriate file type or format", 343 ENMFILE: "No more files", 344 ENOSHARE: "No such host or network path", 345 ECASECLASH: "Filename exists with different case", 346 } 347 348 // Do the interface allocations only once for common 349 // Errno values. 350 var ( 351 errEAGAIN error = EAGAIN 352 errEINVAL error = EINVAL 353 errENOENT error = ENOENT 354 ) 355 356 // errnoErr returns common boxed Errno values, to prevent 357 // allocations at runtime. 358 func errnoErr(e Errno) error { 359 switch e { 360 case 0: 361 return nil 362 case EAGAIN: 363 return errEAGAIN 364 case EINVAL: 365 return errEINVAL 366 case ENOENT: 367 return errENOENT 368 } 369 return e 370 } 371 372 var errnoByCode = map[string]Errno{ 373 "EPERM": EPERM, 374 "ENOENT": ENOENT, 375 "ESRCH": ESRCH, 376 "EINTR": EINTR, 377 "EIO": EIO, 378 "ENXIO": ENXIO, 379 "E2BIG": E2BIG, 380 "ENOEXEC": ENOEXEC, 381 "EBADF": EBADF, 382 "ECHILD": ECHILD, 383 "EAGAIN": EAGAIN, 384 "ENOMEM": ENOMEM, 385 "EACCES": EACCES, 386 "EFAULT": EFAULT, 387 "EBUSY": EBUSY, 388 "EEXIST": EEXIST, 389 "EXDEV": EXDEV, 390 "ENODEV": ENODEV, 391 "ENOTDIR": ENOTDIR, 392 "EISDIR": EISDIR, 393 "EINVAL": EINVAL, 394 "ENFILE": ENFILE, 395 "EMFILE": EMFILE, 396 "ENOTTY": ENOTTY, 397 "EFBIG": EFBIG, 398 "ENOSPC": ENOSPC, 399 "ESPIPE": ESPIPE, 400 "EROFS": EROFS, 401 "EMLINK": EMLINK, 402 "EPIPE": EPIPE, 403 "ENAMETOOLONG": ENAMETOOLONG, 404 "ENOSYS": ENOSYS, 405 "EDQUOT": EDQUOT, 406 "EDOM": EDOM, 407 "ERANGE": ERANGE, 408 "EDEADLK": EDEADLK, 409 "ENOLCK": ENOLCK, 410 "ENOTEMPTY": ENOTEMPTY, 411 "ELOOP": ELOOP, 412 "ENOMSG": ENOMSG, 413 "EIDRM": EIDRM, 414 "ECHRNG": ECHRNG, 415 "EL2NSYNC": EL2NSYNC, 416 "EL3HLT": EL3HLT, 417 "EL3RST": EL3RST, 418 "ELNRNG": ELNRNG, 419 "EUNATCH": EUNATCH, 420 "ENOCSI": ENOCSI, 421 "EL2HLT": EL2HLT, 422 "EBADE": EBADE, 423 "EBADR": EBADR, 424 "EXFULL": EXFULL, 425 "ENOANO": ENOANO, 426 "EBADRQC": EBADRQC, 427 "EBADSLT": EBADSLT, 428 "EDEADLOCK": EDEADLOCK, 429 "EBFONT": EBFONT, 430 "ENOSTR": ENOSTR, 431 "ENODATA": ENODATA, 432 "ETIME": ETIME, 433 "ENOSR": ENOSR, 434 "ENONET": ENONET, 435 "ENOPKG": ENOPKG, 436 "EREMOTE": EREMOTE, 437 "ENOLINK": ENOLINK, 438 "EADV": EADV, 439 "ESRMNT": ESRMNT, 440 "ECOMM": ECOMM, 441 "EPROTO": EPROTO, 442 "EMULTIHOP": EMULTIHOP, 443 "EDOTDOT": EDOTDOT, 444 "EBADMSG": EBADMSG, 445 "EOVERFLOW": EOVERFLOW, 446 "ENOTUNIQ": ENOTUNIQ, 447 "EBADFD": EBADFD, 448 "EREMCHG": EREMCHG, 449 "ELIBACC": ELIBACC, 450 "ELIBBAD": ELIBBAD, 451 "ELIBSCN": ELIBSCN, 452 "ELIBMAX": ELIBMAX, 453 "ELIBEXEC": ELIBEXEC, 454 "EILSEQ": EILSEQ, 455 "EUSERS": EUSERS, 456 "ENOTSOCK": ENOTSOCK, 457 "EDESTADDRREQ": EDESTADDRREQ, 458 "EMSGSIZE": EMSGSIZE, 459 "EPROTOTYPE": EPROTOTYPE, 460 "ENOPROTOOPT": ENOPROTOOPT, 461 "EPROTONOSUPPORT": EPROTONOSUPPORT, 462 "ESOCKTNOSUPPORT": ESOCKTNOSUPPORT, 463 "EOPNOTSUPP": EOPNOTSUPP, 464 "EPFNOSUPPORT": EPFNOSUPPORT, 465 "EAFNOSUPPORT": EAFNOSUPPORT, 466 "EADDRINUSE": EADDRINUSE, 467 "EADDRNOTAVAIL": EADDRNOTAVAIL, 468 "ENETDOWN": ENETDOWN, 469 "ENETUNREACH": ENETUNREACH, 470 "ENETRESET": ENETRESET, 471 "ECONNABORTED": ECONNABORTED, 472 "ECONNRESET": ECONNRESET, 473 "ENOBUFS": ENOBUFS, 474 "EISCONN": EISCONN, 475 "ENOTCONN": ENOTCONN, 476 "ESHUTDOWN": ESHUTDOWN, 477 "ETOOMANYREFS": ETOOMANYREFS, 478 "ETIMEDOUT": ETIMEDOUT, 479 "ECONNREFUSED": ECONNREFUSED, 480 "EHOSTDOWN": EHOSTDOWN, 481 "EHOSTUNREACH": EHOSTUNREACH, 482 "EALREADY": EALREADY, 483 "EINPROGRESS": EINPROGRESS, 484 "ESTALE": ESTALE, 485 "ENOTSUP": ENOTSUP, 486 "ENOMEDIUM": ENOMEDIUM, 487 "ECANCELED": ECANCELED, 488 "ELBIN": ELBIN, 489 "EFTYPE": EFTYPE, 490 "ENMFILE": ENMFILE, 491 "EPROCLIM": EPROCLIM, 492 "ENOSHARE": ENOSHARE, 493 "ECASECLASH": ECASECLASH, 494 "EWOULDBLOCK": EWOULDBLOCK, 495 }