// Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package linux import "fmt" // Errno is a Linux error number on every GOOS. type Errno uintptr func (e Errno) Error() string { if 0 <= int(e) && int(e) < len(errorTable) { s := errorTable[e] if s != "" { return s } } return fmt.Sprintf("errno %d", int(e)) } // numbers defined on Linux/amd64. const ( E2BIG = Errno(0x7) EACCES = Errno(0xd) EADDRINUSE = Errno(0x62) EADDRNOTAVAIL = Errno(0x63) EADV = Errno(0x44) EAFNOSUPPORT = Errno(0x61) EAGAIN = Errno(0xb) EALREADY = Errno(0x72) EBADE = Errno(0x34) EBADF = Errno(0x9) EBADFD = Errno(0x4d) EBADMSG = Errno(0x4a) EBADR = Errno(0x35) EBADRQC = Errno(0x38) EBADSLT = Errno(0x39) EBFONT = Errno(0x3b) EBUSY = Errno(0x10) ECANCELED = Errno(0x7d) ECHILD = Errno(0xa) ECHRNG = Errno(0x2c) ECOMM = Errno(0x46) ECONNABORTED = Errno(0x67) ECONNREFUSED = Errno(0x6f) ECONNRESET = Errno(0x68) EDEADLK = Errno(0x23) EDEADLOCK = Errno(0x23) EDESTADDRREQ = Errno(0x59) EDOM = Errno(0x21) EDOTDOT = Errno(0x49) EDQUOT = Errno(0x7a) EEXIST = Errno(0x11) EFAULT = Errno(0xe) EFBIG = Errno(0x1b) EHOSTDOWN = Errno(0x70) EHOSTUNREACH = Errno(0x71) EHWPOISON = Errno(0x85) EIDRM = Errno(0x2b) EILSEQ = Errno(0x54) EINPROGRESS = Errno(0x73) EINTR = Errno(0x4) EINVAL = Errno(0x16) EIO = Errno(0x5) EISCONN = Errno(0x6a) EISDIR = Errno(0x15) EISNAM = Errno(0x78) EKEYEXPIRED = Errno(0x7f) EKEYREJECTED = Errno(0x81) EKEYREVOKED = Errno(0x80) EL2HLT = Errno(0x33) EL2NSYNC = Errno(0x2d) EL3HLT = Errno(0x2e) EL3RST = Errno(0x2f) ELIBACC = Errno(0x4f) ELIBBAD = Errno(0x50) ELIBEXEC = Errno(0x53) ELIBMAX = Errno(0x52) ELIBSCN = Errno(0x51) ELNRNG = Errno(0x30) ELOOP = Errno(0x28) EMEDIUMTYPE = Errno(0x7c) EMFILE = Errno(0x18) EMLINK = Errno(0x1f) EMSGSIZE = Errno(0x5a) EMULTIHOP = Errno(0x48) ENAMETOOLONG = Errno(0x24) ENAVAIL = Errno(0x77) ENETDOWN = Errno(0x64) ENETRESET = Errno(0x66) ENETUNREACH = Errno(0x65) ENFILE = Errno(0x17) ENOANO = Errno(0x37) ENOBUFS = Errno(0x69) ENOCSI = Errno(0x32) ENODATA = Errno(0x3d) ENODEV = Errno(0x13) ENOENT = Errno(0x2) ENOEXEC = Errno(0x8) ENOKEY = Errno(0x7e) ENOLCK = Errno(0x25) ENOLINK = Errno(0x43) ENOMEDIUM = Errno(0x7b) ENOMEM = Errno(0xc) ENOMSG = Errno(0x2a) ENONET = Errno(0x40) ENOPKG = Errno(0x41) ENOPROTOOPT = Errno(0x5c) ENOSPC = Errno(0x1c) ENOSR = Errno(0x3f) ENOSTR = Errno(0x3c) ENOSYS = Errno(0x26) ENOTBLK = Errno(0xf) ENOTCONN = Errno(0x6b) ENOTDIR = Errno(0x14) ENOTEMPTY = Errno(0x27) ENOTNAM = Errno(0x76) ENOTRECOVERABLE = Errno(0x83) ENOTSOCK = Errno(0x58) ENOTSUP = Errno(0x5f) ENOTTY = Errno(0x19) ENOTUNIQ = Errno(0x4c) ENXIO = Errno(0x6) EOPNOTSUPP = Errno(0x5f) EOVERFLOW = Errno(0x4b) EOWNERDEAD = Errno(0x82) EPERM = Errno(0x1) EPFNOSUPPORT = Errno(0x60) EPIPE = Errno(0x20) EPROTO = Errno(0x47) EPROTONOSUPPORT = Errno(0x5d) EPROTOTYPE = Errno(0x5b) ERANGE = Errno(0x22) EREMCHG = Errno(0x4e) EREMOTE = Errno(0x42) EREMOTEIO = Errno(0x79) ERESTART = Errno(0x55) ERFKILL = Errno(0x84) EROFS = Errno(0x1e) ESHUTDOWN = Errno(0x6c) ESOCKTNOSUPPORT = Errno(0x5e) ESPIPE = Errno(0x1d) ESRCH = Errno(0x3) ESRMNT = Errno(0x45) ESTALE = Errno(0x74) ESTRPIPE = Errno(0x56) ETIME = Errno(0x3e) ETIMEDOUT = Errno(0x6e) ETOOMANYREFS = Errno(0x6d) ETXTBSY = Errno(0x1a) EUCLEAN = Errno(0x75) EUNATCH = Errno(0x31) EUSERS = Errno(0x57) EWOULDBLOCK = Errno(0xb) EXDEV = Errno(0x12) EXFULL = Errno(0x36) ) var errorTable = [...]string{ 1: "operation not permitted", 2: "no such file or directory", 3: "no such process", 4: "interrupted system call", 5: "input/output error", 6: "no such device or address", 7: "argument list too long", 8: "exec format error", 9: "bad file descriptor", 10: "no child processes", 11: "resource temporarily unavailable", 12: "cannot allocate memory", 13: "permission denied", 14: "bad address", 15: "block device required", 16: "device or resource busy", 17: "file exists", 18: "invalid cross-device link", 19: "no such device", 20: "not a directory", 21: "is a directory", 22: "invalid argument", 23: "too many open files in system", 24: "too many open files", 25: "inappropriate ioctl for device", 26: "text file busy", 27: "file too large", 28: "no space left on device", 29: "illegal seek", 30: "read-only file system", 31: "too many links", 32: "broken pipe", 33: "numerical argument out of domain", 34: "numerical result out of range", 35: "resource deadlock avoided", 36: "file name too long", 37: "no locks available", 38: "function not implemented", 39: "directory not empty", 40: "too many levels of symbolic links", 42: "no message of desired type", 43: "identifier removed", 44: "channel number out of range", 45: "level 2 not synchronized", 46: "level 3 halted", 47: "level 3 reset", 48: "link number out of range", 49: "protocol driver not attached", 50: "no CSI structure available", 51: "level 2 halted", 52: "invalid exchange", 53: "invalid request descriptor", 54: "exchange full", 55: "no anode", 56: "invalid request code", 57: "invalid slot", 59: "bad font file format", 60: "device not a stream", 61: "no data available", 62: "timer expired", 63: "out of streams resources", 64: "machine is not on the network", 65: "package not installed", 66: "object is remote", 67: "link has been severed", 68: "advertise error", 69: "srmount error", 70: "communication error on send", 71: "protocol error", 72: "multihop attempted", 73: "RFS specific error", 74: "bad message", 75: "value too large for defined data type", 76: "name not unique on network", 77: "file descriptor in bad state", 78: "remote address changed", 79: "can not access a needed shared library", 80: "accessing a corrupted shared library", 81: ".lib section in a.out corrupted", 82: "attempting to link in too many shared libraries", 83: "cannot exec a shared library directly", 84: "invalid or incomplete multibyte or wide character", 85: "interrupted system call should be restarted", 86: "streams pipe error", 87: "too many users", 88: "socket operation on non-socket", 89: "destination address required", 90: "message too long", 91: "protocol wrong type for socket", 92: "protocol not available", 93: "protocol not supported", 94: "socket type not supported", 95: "operation not supported", 96: "protocol family not supported", 97: "address family not supported by protocol", 98: "address already in use", 99: "cannot assign requested address", 100: "network is down", 101: "network is unreachable", 102: "network dropped connection on reset", 103: "software caused connection abort", 104: "connection reset by peer", 105: "no buffer space available", 106: "transport endpoint is already connected", 107: "transport endpoint is not connected", 108: "cannot send after transport endpoint shutdown", 109: "too many references: cannot splice", 110: "connection timed out", 111: "connection refused", 112: "host is down", 113: "no route to host", 114: "operation already in progress", 115: "operation now in progress", 116: "stale NFS file handle", 117: "structure needs cleaning", 118: "not a XENIX named type file", 119: "no XENIX semaphores available", 120: "is a named type file", 121: "remote I/O error", 122: "disk quota exceeded", 123: "no medium found", 124: "wrong medium type", 125: "operation canceled", 126: "required key not available", 127: "key has expired", 128: "key has been revoked", 129: "key was rejected by service", 130: "owner died", 131: "state not recoverable", 132: "operation not possible due to RF-kill", }