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