summaryrefslogtreecommitdiff
path: root/src/syscall/errstr_linux.go
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2008-07-26 14:49:21 -0700
committerRob Pike <r@golang.org>2008-07-26 14:49:21 -0700
commit4fe776ac43991af527c76f921e040e76d34f9fe0 (patch)
tree82b1a495d349b8e025dab2d7ab72a28e9d689473 /src/syscall/errstr_linux.go
parente1ce25796bc751374701246042f1070b2714c8a4 (diff)
downloadgolang-4fe776ac43991af527c76f921e040e76d34f9fe0.tar.gz
beginnings of a low-level syscall library
R=ken OCL=13483 CL=13496
Diffstat (limited to 'src/syscall/errstr_linux.go')
-rw-r--r--src/syscall/errstr_linux.go428
1 files changed, 428 insertions, 0 deletions
diff --git a/src/syscall/errstr_linux.go b/src/syscall/errstr_linux.go
new file mode 100644
index 000000000..875217afc
--- /dev/null
+++ b/src/syscall/errstr_linux.go
@@ -0,0 +1,428 @@
+// 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 syscall
+
+export errstr
+
+const (
+ ENONE=0;
+ EPERM=1;
+ ENOENT=2;
+ ESRCH=3;
+ EINTR=4;
+ EIO=5;
+ ENXIO=6;
+ E2BIG=7;
+ ENOEXEC=8;
+ EBADF=9;
+ ECHILD=10;
+ EAGAIN=11;
+ ENOMEM=12;
+ EACCES=13;
+ EFAULT=14;
+ ENOTBLK=15;
+ EBUSY=16;
+ EEXIST=17;
+ EXDEV=18;
+ ENODEV=19;
+ ENOTDIR=20;
+ EISDIR=21;
+ EINVAL=22;
+ ENFILE=23;
+ EMFILE=24;
+ ENOTTY=25;
+ ETXTBSY=26;
+ EFBIG=27;
+ ENOSPC=28;
+ ESPIPE=29;
+ EROFS=30;
+ EMLINK=31;
+ EPIPE=32;
+ EDOM=33;
+ ERANGE=34;
+ EDEADLK=35;
+ ENAMETOOLONG=36;
+ ENOLCK=37;
+ ENOSYS=38;
+ ENOTEMPTY=39;
+ ELOOP=40;
+ ENOMSG=42;
+ EIDRM=43;
+ ECHRNG=44;
+ EL2NSYNC=45;
+ EL3HLT=46;
+ EL3RST=47;
+ ELNRNG=48;
+ EUNATCH=49;
+ ENOCSI=50;
+ EL2HLT=51;
+ EBADE=52;
+ EBADR=53;
+ EXFULL=54;
+ ENOANO=55;
+ EBADRQC=56;
+ EBADSLT=57;
+ EBFONT=59;
+ ENOSTR=60;
+ ENODATA=61;
+ ETIME=62;
+ ENOSR=63;
+ ENONET=64;
+ ENOPKG=65;
+ EREMOTE=66;
+ ENOLINK=67;
+ EADV=68;
+ ESRMNT=69;
+ ECOMM=70;
+ EPROTO=71;
+ EMULTIHOP=72;
+ EDOTDOT=73;
+ EBADMSG=74;
+ EOVERFLOW=75;
+ ENOTUNIQ=76;
+ EBADFD=77;
+ EREMCHG=78;
+ ELIBACC=79;
+ ELIBBAD=80;
+ ELIBSCN=81;
+ ELIBMAX=82;
+ ELIBEXEC=83;
+ EILSEQ=84;
+ ERESTART=85;
+ ESTRPIPE=86;
+ EUSERS=87;
+ ENOTSOCK=88;
+ EDESTADDRREQ=89;
+ EMSGSIZE=90;
+ EPROTOTYPE=91;
+ ENOPROTOOPT=92;
+ EPROTONOSUPPORT=93;
+ ESOCKTNOSUPPORT=94;
+ EOPNOTSUPP=95;
+ EPFNOSUPPORT=96;
+ EAFNOSUPPORT=97;
+ EADDRINUSE=98;
+ EADDRNOTAVAIL=99;
+ ENETDOWN=100;
+ ENETUNREACH=101;
+ ENETRESET=102;
+ ECONNABORTED=103;
+ ECONNRESET=104;
+ ENOBUFS=105;
+ EISCONN=106;
+ ENOTCONN=107;
+ ESHUTDOWN=108;
+ ETOOMANYREFS=109;
+ ETIMEDOUT=110;
+ ECONNREFUSED=111;
+ EHOSTDOWN=112;
+ EHOSTUNREACH=113;
+ EALREADY=114;
+ EINPROGRESS=115;
+ ESTALE=116;
+ EUCLEAN=117;
+ ENOTNAM=118;
+ ENAVAIL=119;
+ EISNAM=120;
+ EREMOTEIO=121;
+ EDQUOT=122;
+ ENOMEDIUM=123;
+ EMEDIUMTYPE=124;
+ ECANCELED=125;
+ ENOKEY=126;
+ EKEYEXPIRED=127;
+ EKEYREVOKED=128;
+ EKEYREJECTED=129;
+ ELAST=130;
+)
+
+export (
+ ENONE,
+ EPERM,
+ ENOENT,
+ ESRCH,
+ EINTR,
+ EIO,
+ ENXIO,
+ E2BIG,
+ ENOEXEC,
+ EBADF,
+ ECHILD,
+ EAGAIN,
+ ENOMEM,
+ EACCES,
+ EFAULT,
+ ENOTBLK,
+ EBUSY,
+ EEXIST,
+ EXDEV,
+ ENODEV,
+ ENOTDIR,
+ EISDIR,
+ EINVAL,
+ ENFILE,
+ EMFILE,
+ ENOTTY,
+ ETXTBSY,
+ EFBIG,
+ ENOSPC,
+ ESPIPE,
+ EROFS,
+ EMLINK,
+ EPIPE,
+ EDOM,
+ ERANGE,
+ EDEADLK,
+ ENAMETOOLONG,
+ ENOLCK,
+ ENOSYS,
+ ENOTEMPTY,
+ ELOOP,
+ ENOMSG,
+ EIDRM,
+ ECHRNG,
+ EL2NSYNC,
+ EL3HLT,
+ EL3RST,
+ ELNRNG,
+ EUNATCH,
+ ENOCSI,
+ EL2HLT,
+ EBADE,
+ EBADR,
+ EXFULL,
+ ENOANO,
+ EBADRQC,
+ EBADSLT,
+ EBFONT,
+ ENOSTR,
+ ENODATA,
+ ETIME,
+ ENOSR,
+ ENONET,
+ ENOPKG,
+ EREMOTE,
+ ENOLINK,
+ EADV,
+ ESRMNT,
+ ECOMM,
+ EPROTO,
+ EMULTIHOP,
+ EDOTDOT,
+ EBADMSG,
+ EOVERFLOW,
+ ENOTUNIQ,
+ EBADFD,
+ EREMCHG,
+ ELIBACC,
+ ELIBBAD,
+ ELIBSCN,
+ ELIBMAX,
+ ELIBEXEC,
+ EILSEQ,
+ ERESTART,
+ ESTRPIPE,
+ EUSERS,
+ ENOTSOCK,
+ EDESTADDRREQ,
+ EMSGSIZE,
+ EPROTOTYPE,
+ ENOPROTOOPT,
+ EPROTONOSUPPORT,
+ ESOCKTNOSUPPORT,
+ EOPNOTSUPP,
+ EPFNOSUPPORT,
+ EAFNOSUPPORT,
+ EADDRINUSE,
+ EADDRNOTAVAIL,
+ ENETDOWN,
+ ENETUNREACH,
+ ENETRESET,
+ ECONNABORTED,
+ ECONNRESET,
+ ENOBUFS,
+ EISCONN,
+ ENOTCONN,
+ ESHUTDOWN,
+ ETOOMANYREFS,
+ ETIMEDOUT,
+ ECONNREFUSED,
+ EHOSTDOWN,
+ EHOSTUNREACH,
+ EALREADY,
+ EINPROGRESS,
+ ESTALE,
+ EUCLEAN,
+ ENOTNAM,
+ ENAVAIL,
+ EISNAM,
+ EREMOTEIO,
+ EDQUOT,
+ ENOMEDIUM,
+ EMEDIUMTYPE,
+ ECANCELED,
+ ENOKEY,
+ EKEYEXPIRED,
+ EKEYREVOKED,
+ EKEYREJECTED,
+ ELAST
+)
+
+var error [ELAST]string;
+
+func init(){
+ error[ENONE] = "No error";
+ error[EPERM] = "Operation not permitted";
+ error[ENOENT] = "No such file or directory";
+ error[ESRCH] = "No such process";
+ error[EINTR] = "Interrupted system call";
+ error[EIO] = "I/O error";
+ error[ENXIO] = "No such device or address";
+ error[E2BIG] = "Argument list too long";
+ error[ENOEXEC] = "Exec format error";
+ error[EBADF] = "Bad file number";
+ error[ECHILD] = "No child processes";
+ error[EAGAIN] = "Try again";
+ error[ENOMEM] = "Out of memory";
+ error[EACCES] = "Permission denied";
+ error[EFAULT] = "Bad address";
+ error[ENOTBLK] = "Block device required";
+ error[EBUSY] = "Device or resource busy";
+ error[EEXIST] = "File exists";
+ error[EXDEV] = "Cross-device link";
+ error[ENODEV] = "No such device";
+ error[ENOTDIR] = "Not a directory";
+ error[EISDIR] = "Is a directory";
+ error[EINVAL] = "Invalid argument";
+ error[ENFILE] = "File table overflow";
+ error[EMFILE] = "Too many open files";
+ error[ENOTTY] = "Not a typewriter";
+ error[ETXTBSY] = "Text file busy";
+ error[EFBIG] = "File too large";
+ error[ENOSPC] = "No space left on device";
+ error[ESPIPE] = "Illegal seek";
+ error[EROFS] = "Read-only file system";
+ error[EMLINK] = "Too many links";
+ error[EPIPE] = "Broken pipe";
+ error[EDOM] = "Math argument out of domain of func";
+ error[ERANGE] = "Math result not representable";
+ error[EDEADLK] = "Resource deadlock would occur";
+ error[ENAMETOOLONG] = "File name too long";
+ error[ENOLCK] = "No record locks available";
+ error[ENOSYS] = "Function not implemented";
+ error[ENOTEMPTY] = "Directory not empty";
+ error[ELOOP] = "Too many symbolic links encountered";
+ error[ENOMSG] = "No message of desired type";
+ error[EIDRM] = "Identifier removed";
+ error[ECHRNG] = "Channel number out of range";
+ error[EL2NSYNC] = "Level 2 not synchronized";
+ error[EL3HLT] = "Level 3 halted";
+ error[EL3RST] = "Level 3 reset";
+ error[ELNRNG] = "Link number out of range";
+ error[EUNATCH] = "Protocol driver not attached";
+ error[ENOCSI] = "No CSI structure available";
+ error[EL2HLT] = "Level 2 halted";
+ error[EBADE] = "Invalid exchange";
+ error[EBADR] = "Invalid request descriptor";
+ error[EXFULL] = "Exchange full";
+ error[ENOANO] = "No anode";
+ error[EBADRQC] = "Invalid request code";
+ error[EBADSLT] = "Invalid slot";
+ error[EBFONT] = "Bad font file format";
+ error[ENOSTR] = "Device not a stream";
+ error[ENODATA] = "No data available";
+ error[ETIME] = "Timer expired";
+ error[ENOSR] = "Out of streams resources";
+ error[ENONET] = "Machine is not on the network";
+ error[ENOPKG] = "Package not installed";
+ error[EREMOTE] = "Object is remote";
+ error[ENOLINK] = "Link has been severed";
+ error[EADV] = "Advertise error";
+ error[ESRMNT] = "Srmount error";
+ error[ECOMM] = "Communication error on send";
+ error[EPROTO] = "Protocol error";
+ error[EMULTIHOP] = "Multihop attempted";
+ error[EDOTDOT] = "RFS specific error";
+ error[EBADMSG] = "Not a data message";
+ error[EOVERFLOW] = "Value too large for defined data type";
+ error[ENOTUNIQ] = "Name not unique on network";
+ error[EBADFD] = "File descriptor in bad state";
+ error[EREMCHG] = "Remote address changed";
+ error[ELIBACC] = "Can not access a needed shared library";
+ error[ELIBBAD] = "Accessing a corrupted shared library";
+ error[ELIBSCN] = ".lib section in a.out corrupted";
+ error[ELIBMAX] = "Attempting to link in too many shared libraries";
+ error[ELIBEXEC] = "Cannot exec a shared library directly";
+ error[EILSEQ] = "Illegal byte sequence";
+ error[ERESTART] = "Interrupted system call should be restarted";
+ error[ESTRPIPE] = "Streams pipe error";
+ error[EUSERS] = "Too many users";
+ error[ENOTSOCK] = "Socket operation on non-socket";
+ error[EDESTADDRREQ] = "Destination address required";
+ error[EMSGSIZE] = "Message too long";
+ error[EPROTOTYPE] = "Protocol wrong type for socket";
+ error[ENOPROTOOPT] = "Protocol not available";
+ error[EPROTONOSUPPORT] = "Protocol not supported";
+ error[ESOCKTNOSUPPORT] = "Socket type not supported";
+ error[EOPNOTSUPP] = "Operation not supported on transport endpoint";
+ error[EPFNOSUPPORT] = "Protocol family not supported";
+ error[EAFNOSUPPORT] = "Address family not supported by protocol";
+ error[EADDRINUSE] = "Address already in use";
+ error[EADDRNOTAVAIL] = "Cannot assign requested address";
+ error[ENETDOWN] = "Network is down";
+ error[ENETUNREACH] = "Network is unreachable";
+ error[ENETRESET] = "Network dropped connection because of reset";
+ error[ECONNABORTED] = "Software caused connection abort";
+ error[ECONNRESET] = "Connection reset by peer";
+ error[ENOBUFS] = "No buffer space available";
+ error[EISCONN] = "Transport endpoint is already connected";
+ error[ENOTCONN] = "Transport endpoint is not connected";
+ error[ESHUTDOWN] = "Cannot send after transport endpoint shutdown";
+ error[ETOOMANYREFS] = "Too many references: cannot splice";
+ error[ETIMEDOUT] = "Connection timed out";
+ error[ECONNREFUSED] = "Connection refused";
+ error[EHOSTDOWN] = "Host is down";
+ error[EHOSTUNREACH] = "No route to host";
+ error[EALREADY] = "Operation already in progress";
+ error[EINPROGRESS] = "Operation now in progress";
+ error[ESTALE] = "Stale NFS file handle";
+ error[EUCLEAN] = "Structure needs cleaning";
+ error[ENOTNAM] = "Not a XENIX named type file";
+ error[ENAVAIL] = "No XENIX semaphores available";
+ error[EISNAM] = "Is a named type file";
+ error[EREMOTEIO] = "Remote I/O error";
+ error[EDQUOT] = "Quota exceeded";
+ error[ENOMEDIUM] = "No medium found";
+ error[EMEDIUMTYPE] = "Wrong medium type";
+ error[ECANCELED] = "Operation Canceled";
+ error[ENOKEY] = "Required key not available";
+ error[EKEYEXPIRED] = "Key has expired";
+ error[EKEYREVOKED] = "Key has been revoked";
+ error[EKEYREJECTED] = "Key was rejected by service";
+}
+
+var digits string = "0123456789"
+
+func str(val int64) string { // do it here rather than with fmt to avoid dependency
+ if val < 0 {
+ return "-" + str(-val);
+ }
+ var buf [32]byte; // big enough for int64
+ i := len(buf)-1;
+ for val >= 10 {
+ buf[i] = digits[val%10];
+ i--;
+ val /= 10;
+ }
+ buf[i] = digits[val];
+ return string(buf)[i:len(buf)];
+}
+
+func errstr(errno int64) string {
+ if errno < 0 || errno >= len(error) {
+ return "Error " + str(errno)
+ }
+ return error[errno]
+}