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