| ア | イ | ウ | エ | オ |
| カ | キ | ク | ケ | コ |
| サ | シ | ス | セ | ソ |
| タ | チ | ツ | テ | ト |
| ナ | ニ | ヌ | ネ | ノ |
| ハ | ヒ | フ | ヘ | ホ |
| マ | ミ | ム | メ | モ |
| ヤ | ユ | ヨ | ||
| ラ | リ | ル | レ | ロ |
| ワ | ヰ | ヴ | ヱ | ヲ |
| ン |
| A | B | C | D | E |
| F | G | H | I | J |
| K | L | M | N | O |
| P | Q | R | S | T |
| U | V | W | X | Y |
| Z | 数字 | 記号 | ||
C/C++で、直近に発生したエラーの番号を持つint型の変数。
#include <errno.h>
#include <cerrno>
現在の実装では、errnoはスレッドローカルストレージに保存される。つまり、スレッド毎に値を持っている。あるスレッドでerrnoが設定された時、同じプロセスであっても他のスレッドのerrnoには影響しない。
極めて当然のことだが、マルチスレッドのプログラムは複数のスレッドが並行して動作する。同じプロセスという理由だけで、他のスレッドの動作によりerrnoが勝手に書き換わるようなことがあっては、使い物にならない。そこで、現在ではスレッドセーフになっているのである。
Linuxのユーザーランドで、gcc 4.4、glibc-2.11.1のamd64対応64ビット環境の場合、次のように定義されている。
errno.h
extern int errno;
bits/errno.h
extern int *__errno_location (void) __THROW __attribute__ ((__const__)); #define errno (*__errno_location ())
__errno_location()は、Linuxカーネルではなくglibc内に処理がある。
glibc-2.11.1/csu/errno-loc.c
__errno_location (void)
{
return &errno;
}
glibc-2.11.1/csu/errno.c
__thread int errno;
このようにして、gccでは、errnoは間接的にスレッドローカル変数のint型として定義され、それが返されるようになっている。
Visual V++ 6.0の場合、include\ERRNO.H などで次のように定義されている。
_CRTIMP extern int * __cdecl _errno(void); #define errno (*_errno())
Visual C++ 10.0の場合、include\errno.h とファイル名が小文字になるが、定義内容は全く同じである。
ここで参照している _errno() の定義は不明だが、Windowsでも単なる変数ではなく関数化することでマルチスレッドに対応している。
FreeBSDのカーネルの場合、次のように実装されている。
/usr/include/errno.h(シンボリックリンクであり、実体は/usr/include/sys/errno.h)に定義されるerrnoはマクロであり、__errno()を呼び出す。
int * __error(void); #define errno (* __error())
__errorは、/usr/src/lib/libc/sys/__error.cで定義されている(なお、以前は__error_unthreadedにvoidはなかったが、FreeBSD 9ではvoidが付いている)。
extern int errno;
__weak_reference(__error_unthreaded, __error);
int *
__error_unthreaded(void)
{
return(&errno);
}
実際のerrno変数は、/usr/src/lib/libc/gen/errno.cで定義されている。
int errno;
スレッドライブラリlibthr用の定義は /usr/src/lib/libthr/sys/thr_error.cにある。
#undef errno
extern int errno;
int *
__error(void)
{
struct pthread *curthread;
if (_thr_initial != NULL) {
curthread = _get_curthread();
if (curthread != NULL && curthread != _thr_initial)
return (&curthread->error);
}
return (&errno);
}
_get_curthread()はカレントのスレッド情報構造体struct pthread *を返す関数で、/usr/src/lib/libc_r/uthread/uthread_kern.cで定義されている。
つまり、マルチスレッド動作時は、スレッド情報構造体からerrnoを取り出す。このためスレッドセーフになっている。
Linuxカーネルでの errno の定義は不明。
libc/include/errno.h に定義がある。
extern volatile int* __errno(void); #define errno (*__errno())
関数は、libc/bionic/__errno.c に定義がある。
volatile int* __errno( void )
{
return &((volatile int*)__get_tls())[TLS_SLOT_ERRNO];
}
TLSはThread Local Storageの略である。
まず、TLS_SLOT_ERRNO はenumであり、2である。
enum {
TLS_SLOT_SELF = 0, /* The kernel requires this specific slot for x86. */
TLS_SLOT_THREAD_ID,
TLS_SLOT_ERRNO,
(コメント略)
TLS_SLOT_OPENGL_API = 3,
(以下略)
次に、__get_tls() の定義はCPUごとに変わってくるが、KitKat時点で、一般的なARMの場合は次のとおりである。
# define __get_tls() \
({ register unsigned int __val; \
asm ("mrc p15, 0, %0, c13, c0, 3" : "=r"(__val)); \
(volatile void*) __val; })
armv6k(マルチコア)とarmv7では、cp15がTLSレジスターとなり、ここにTLSの先頭アドレスが格納される。
それ以前のARMアーキテクチャでは、カーネル空間のメモリーアドレス 0xffff0ff0 からにTLSの先頭アドレスを格納しており、__get_tls()は次のような実装であった。
# define __get_tls() ( *((volatile void **) 0xffff0ff0) )
いずれにしても、Bionicの__get_tls()はシステムコールなどは使わず、直接アドレスを参照する実装になっていることが分かる。
errnoが実際にどのような値であるかは、ユーザー空間であればC/C++コンパイラーごとに異なり、カーネル空間であればOSによって異なる。
このため、値を直接参照するのではなく、#defineされた定数を使うことになる。
errnoが実際にどのような値であるかは、OSによって違う。このため、値を直接参照するのではなく、#defineされた定数を使うことになる。
FreeBSD 9の場合、次のように実装されている(最大94まで)。なお、※は_POSIX_SOURCEで除外されるもの。
| 名称 | 値 | 英語の説明 | 意訳 |
|---|---|---|---|
| EPERM | 1 | Operation not permitted | 許可されていない操作 |
| ENOENT | 2 | No such file or directory | ファイルまたはディレクトリが見つからない |
| ESRCH | 3 | No such process | 指定されたプロセスは存在しない |
| EINTR | 4 | Interrupted system call | シグナルに割り込まれた |
| EIO | 5 | Input/output error | 入出力エラー |
| ENXIO | 6 | Device not configured | デバイスが無いか準備されていない |
| E2BIG | 7 | Argument list too long | 引数リストが長すぎる |
| ENOEXEC | 8 | Exec format error | 実行形式が異常 |
| EBADF | 9 | Bad file descriptor | 無効なファイルディスクリプターである |
| ECHILD | 10 | No child processes | 子プロセスが存在しない |
| EDEADLK | 11 | Resource deadlock avoided | リソースデッドロックを回避した |
| ENOMEM | 12 | Cannot allocate memory | メモリー不足 |
| EACCES | 13 | Permission denied | パーミッションがない |
| EFAULT | 14 | Bad address | ポインターがユーザーアドレス空間にない |
| ENOTBLK | 15 | ※Block device required | ブロックデバイスが必要である |
| EBUSY | 16 | Device busy | デバイスまたはリソースは使用中である |
| EEXIST | 17 | File exists | ファイルは既に存在する |
| EXDEV | 18 | Cross-device link | デバイスをまたぐリンクである |
| ENODEV | 19 | Operation not supported by device | デバイスが対応していない操作である |
| ENOTDIR | 20 | Not a directory | ディレクトリではない |
| EISDIR | 21 | Is a directory | ディレクトリである |
| EINVAL | 22 | Invalid argument | 無効な引数である |
| ENFILE | 23 | Too many open files in system | オープン済ファイル数がシステム上限に達した |
| EMFILE | 24 | Too many open files | 開いているファイルが多すぎる |
| ENOTTY | 25 | Inappropriate ioctl for device | デバイスが対応していないioctlである |
| ETXTBSY | 26 | ※Text file busy | テクストファイルが使用中である |
| EFBIG | 27 | File too large | ファイルが大きすぎる |
| ENOSPC | 28 | No space left on device | デバイスの空き領域が不足 |
| ESPIPE | 29 | Illegal seek | 無効なシーク |
| EROFS | 30 | Read-only filesystem | リードオンリーのファイルシステムである |
| EMLINK | 31 | Too many links | リンクの数が多すぎる |
| EPIPE | 32 | Broken pipe | ソケットはクライアント側で既にcloseされている |
| math software | |||
| EDOM | 33 | Numerical argument out of domain | 数値引数が領域外である |
| ERANGE | 34 | Result too large | 結果が大き過ぎる |
| non-blocking and interrupt i/o | |||
| EAGAIN | 35 | Resource temporarily unavailable | リソースが一時的に利用不可 |
| EWOULDBLOCK | ※Operation would block | 操作はブロックされる見込みである | |
| EINPROGRESS | 36 | ※Operation now in progress | 操作は現在実行中である |
| EALREADY | 37 | ※Operation already in progress | 操作は既に実行中である |
| ipc/network software -- argument errors | |||
| ENOTSOCK | 38 | ※Socket operation on non-socket | ソケットではない |
| EDESTADDRREQ | 39 | ※Destination address required | 宛先のアドレスが必要 |
| EMSGSIZE | 40 | ※Message too long | メッセージが長過ぎる |
| EPROTOTYPE | 41 | ※Protocol wrong type for socket | ソケットに指定できないプロトコルタイプである |
| ENOPROTOOPT | 42 | ※Protocol not available | 利用できないプロトコルである |
| EPROTONOSUPPORT | 43 | ※Protocol not supported | 未対応のプロトコルである |
| ESOCKTNOSUPPORT | 44 | ※Socket type not supported | 未対応のソケットタイプである |
| EOPNOTSUPP | 45 | ※Operation not supported | ソケットが対応していない操作である |
| ENOTSUP | ※Operation not supported | 対応していない操作である | |
| EPFNOSUPPORT | 46 | ※Protocol family not supported | 対応していないプロトコルファミリーである |
| EAFNOSUPPORT | 47 | ※Address family not supported by protocol family | 対応していないアドレスファミリーである |
| EADDRINUSE | 48 | ※Address already in use | アドレスは既に使用されている |
| EADDRNOTAVAIL | 49 | ※Can't assign requested address | アドレスが使用できない |
| ipc/network software -- operational errors | |||
| ENETDOWN | 50 | ※Network is down | ネットワークは不通である |
| ENETUNREACH | 51 | ※Network is unreachable | ネットワークは到達不能である |
| ENETRESET | 52 | ※Network dropped connection on reset | リセットでネットワーク接続が失われた |
| ECONNABORTED | 53 | ※Software caused connection abort | ソフトウェア要求により接続は中止された |
| ECONNRESET | 54 | ※Connection reset by peer | 接続は相手からリセットされた |
| ENOBUFS | 55 | ※No buffer space available | バッファーは容量不足である |
| EISCONN | 56 | ※Socket is already connected | ソケットは既に接続されている |
| ENOTCONN | 57 | ※Socket is not connected | ソケットは接続されていない |
| ESHUTDOWN | 58 | ※Can't send after socket shutdown | ソケットはシャットダウン中であり送信できない |
| ETOOMANYREFS | 59 | ※Too many references: can't splice | 処理限界を超える多重参照である |
| ETIMEDOUT | 60 | ※Operation timed out | 操作はタイムアウトした |
| ECONNREFUSED | 61 | ※Connection refused | 接続は拒否された |
| ELOOP | 62 | ※Too many levels of symbolic links | シンボリックリンクの回数が多すぎる |
| ENAMETOOLONG | 63 | File name too long | ファイル名が長過ぎる |
| should be rearranged | |||
| EHOSTDOWN | 64 | ※Host is down | ホストはダウンしている |
| EHOSTUNREACH | 65 | ※No route to host | ホストに到達不能である |
| ENOTEMPTY | 66 | Directory not empty | ディレクトリーが空ではない |
| quotas & mush | |||
| EPROCLIM | 67 | ※Too many processes | プロセスが多すぎる |
| EUSERS | 68 | ※Too many users | ユーザーが多すぎる |
| EDQUOT | 69 | ※Disc quota exceeded | ディスククォータ超過 |
| Network File System | |||
| ESTALE | 70 | ※Stale NFS file handle | NFSファイルハンドルが古い |
| EREMOTE | 71 | ※Too many levels of remote in path | オブジェクトはリモートにある |
| EBADRPC | 72 | ※RPC struct is bad | RPC構造体は無効である |
| ERPCMISMATCH | 73 | ※RPC version wrong | RPCバージョンが間違っている |
| EPROGUNAVAIL | 74 | ※RPC prog. not avail | RPCプログラムが利用できない |
| EPROGMISMATCH | 75 | ※Program version wrong | プログラムのバージョンが合っていない |
| EPROCUNAVAIL | 76 | ※Bad procedure for program | プログラムでは利用できないprocedureである |
| ENOLCK | 77 | No locks available | ロックが利用できない |
| ENOSYS | 78 | Function not implemented | 関数は実装されていない |
| EFTYPE | 79 | ※Inappropriate file type or format | ファイルの型または形式が不適切である |
| EAUTH | 80 | ※Authentication error | 認証エラーである |
| ENEEDAUTH | 81 | ※Need authenticator | 認証物が必要である |
| EIDRM | 82 | ※Identifier removed | 識別子は削除された |
| ENOMSG | 83 | ※No message of desired type | 要求された型のメッセージがない |
| EOVERFLOW | 84 | ※Value too large to be stored in data type | データ型に格納するには値が大きすぎる |
| ECANCELED | 85 | ※Operation canceled | 処理はキャンセルされた |
| EILSEQ | 86 | ※Illegal byte sequence | 不正なバイト列である |
| ENOATTR | 87 | ※Attribute not found | 属性がない |
| EDOOFUS | 88 | ※Programming error | プログラミングエラーである |
| EBADMSG | 89 | Bad message | 無効なメッセージである |
| EMULTIHOP | 90 | Multihop attempted | マルチホップが試みられた |
| ENOLINK | 91 | Link has been severed | リンクが切断されている |
| EPROTO | 92 | Protocol error | プロトコルエラーである |
| その他 | |||
| ENOTCAPABLE | 93 | ※Capabilities insufficient | ケーパビリティが不足 |
| ECAPMODE | 94 | ※Not permitted in capability mode | ケーパビリティモードでは不許可 |
| ELAST | 94 | ※Must be equal largest errno | errnoの最大値 |
| pseudo-errors returned inside kernel to modify return to process | |||
| ERESTART | (-1) | restart syscall | システムコールの再起動が必要 |
| EJUSTRETURN | (-2) | don't modify regs, just return | レジスターは変更せず、そのまま返却した |
| ENOIOCTL | (-3) | ioctl not handled by this layer | ioctlは、この層で処理されない |
| EDIRIOCTL | (-4) | do direct ioctl in GEOM | GEOMで直接ioctlを行なう |
Linuxの場合、include/asm-generic/errno-base.hで1〜34、それより大きいものがinclude/asm-generic/errno.h、更にカーネル内部専用の512以上がinclude/linux/errno.hで、それぞれ定義されている。BSDやPOSIX仕様と比較して、非常に種類が多いのが特徴である。
| errno-base | |||
|---|---|---|---|
| 名称 | 値 | 英語の説明 | 意訳 |
| EPERM | 1 | Operation not permitted | 許可されていない操作 |
| ENOENT | 2 | No such file or directory | ファイルまたはディレクトリが見つからない |
| ESRCH | 3 | No such process | 指定されたプロセスは存在しない |
| EINTR | 4 | Interrupted system call | シグナルに割り込まれた |
| EIO | 5 | I/O error | 入出力エラー |
| ENXIO | 6 | No such device or address | デバイスまたはアドレスが無い |
| E2BIG | 7 | Argument list too long | 引数リストが長すぎる |
| ENOEXEC | 8 | Exec format error | 実行形式が異常 |
| EBADF | 9 | Bad file number | 無効なファイル番号である |
| ECHILD | 10 | No child processes | 子プロセスが存在しない |
| EAGAIN | 11 | Try again | 再度実行せよ |
| EWOULDBLOCK | Operation would block | 操作はブロックされる見込みである | |
| ENOMEM | 12 | Out of memory | メモリー不足 |
| EACCES | 13 | Permission denied | パーミッションがない |
| EFAULT | 14 | Bad address | ポインターがユーザーアドレス空間にない |
| ENOTBLK | 15 | Block device required | ブロックデバイスが必要である |
| EBUSY | 16 | Device or resource busy | デバイスまたはリソースは使用中である |
| EEXIST | 17 | File exists | ファイルは既に存在する |
| EXDEV | 18 | Cross-device link | デバイスをまたぐリンクである |
| ENODEV | 19 | No such device | デバイスがない |
| ENOTDIR | 20 | Not a directory | ディレクトリではない |
| EISDIR | 21 | Is a directory | ディレクトリである |
| EINVAL | 22 | Invalid argument | 無効な引数である |
| ENFILE | 23 | File table overflow | オープン済ファイル数がシステム上限に達した |
| EMFILE | 24 | Too many open files | 開いているファイルが多すぎる |
| ENOTTY | 25 | Not a typewriter | TTYではない |
| ETXTBSY | 26 | Text file busy | テクストファイルが使用中である |
| EFBIG | 27 | File too large | ファイルが大きすぎる |
| ENOSPC | 28 | No space left on device | デバイスの空き領域が不足 |
| ESPIPE | 29 | Illegal seek | 無効なシーク |
| EROFS | 30 | Read-only file system | リードオンリーのファイルシステムである |
| EMLINK | 31 | Too many links | リンクの数が多すぎる |
| EPIPE | 32 | Broken pipe | ソケットはクライアント側で既にcloseされている |
| EDOM | 33 | Math argument out of domain of func | 数値引数が領域外である |
| ERANGE | 34 | Math result not representable | 結果が大き過ぎる |
| errno | |||
| 名称 | 値 | 英語の説明 | 意訳 |
| EDEADLK | 35 | Resource deadlock would occur | リソースデッドロックを回避した |
| EDEADLOCK | |||
| ENAMETOOLONG | 36 | File name too long | ファイル名が長過ぎる |
| ENOLCK | 37 | No record locks available | 利用できるロックが無い |
| ENOSYS | 38 | Function not implemented | 関数は実装されていない |
| ENOTEMPTY | 39 | Directory not empty | ディレクトリーが空ではない |
| ELOOP | 40 | Too many symbolic links encountered | シンボリックリンクの回数が多すぎる |
| ENOMSG | 42 | No message of desired type | 要求された型のメッセージがない |
| EIDRM | 43 | Identifier removed | 識別子は削除された |
| ECHRNG | 44 | Channel number out of range | チャンネル番号が範囲外である |
| EL2NSYNC | 45 | Level 2 not synchronized | 同期できていない (レベル2) |
| EL3HLT | 46 | Level 3 halted | 停止 (レベル3) |
| EL3RST | 47 | Level 3 reset | リセット (レベル3) |
| ELNRNG | 48 | Link number out of range | リンク番号が範囲外である |
| EUNATCH | 49 | Protocol driver not attached | プロトコルドライバがアタッチされていない |
| ENOCSI | 50 | No CSI structure available | CSI構造が利用できない |
| EL2HLT | 51 | Level 2 halted | 停止 (レベル2) |
| EBADE | 52 | Invalid exchange | 不正な交換である |
| EBADR | 53 | Invalid request descriptor | 無効な要求ディスクリプターである |
| EXFULL | 54 | Exchange full | 変換テーブルがいっぱいである |
| ENOANO | 55 | No anode | 陰極がない |
| EBADRQC | 56 | Invalid request code | 不正なリクエストコード |
| EBADSLT | 57 | Invalid slot | 不正なスロット |
| EBFONT | 59 | Bad font file format | 不正なフォントファイルフォーマット |
| ENOSTR | 60 | Device not a stream | ストリームではない |
| ENODATA | 61 | No data available | データがない |
| ETIME | 62 | Timer expired | 時間が経過した |
| ENOSR | 63 | Out of streams resources | ストリームリソースが存在しない |
| ENONET | 64 | Machine is not on the network | 装置がネットワーク上にない |
| ENOPKG | 65 | Package not installed | パッケージがインストールされていない |
| EREMOTE | 66 | Object is remote | オブジェクトがリモートにある |
| ENOLINK | 67 | Link has been severed | リンクが切れている |
| EADV | 68 | Advertise error | Advertiseエラー |
| ESRMNT | 69 | Srmount error | Srmountエラー |
| ECOMM | 70 | Communication error on send | 送信時に通信エラーが発生した |
| EPROTO | 71 | Protocol error | プロトコルエラーである |
| EMULTIHOP | 72 | Multihop attempted | マルチホップが試みられた |
| EDOTDOT | 73 | RFS specific error | RFS特有のエラー |
| EBADMSG | 74 | Not a data message | データメッセージではない |
| EOVERFLOW | 75 | Value too large for defined data type | データ型に格納するには値が大きすぎる |
| ENOTUNIQ | 76 | Name not unique on network | 名前がネットワークで一意ではない |
| EBADFD | 77 | File descriptor in bad state | ファイルディスクリプターが不正な状態である |
| EREMCHG | 78 | Remote address changed | リモートアドレスが変わった |
| ELIBACC | 79 | Can not access a needed shared library | 必要な共有ライブラリにアクセスできない |
| ELIBBAD | 80 | Accessing a corrupted shared library | 壊れた共有ライブラリにアクセスをした |
| ELIBSCN | 81 | .lib section in a.out corrupted | .libセクションが壊れている |
| ELIBMAX | 82 | Attempting to link in too many shared libraries | リンクしようとした共有ライブラリが多過ぎる |
| ELIBEXEC | 83 | Cannot exec a shared library directly | 共有ライブラリを直接実行できなかった |
| EILSEQ | 84 | Illegal byte sequence | 不正なバイト列である |
| ERESTART | 85 | Interrupted system call should be restarted | 中断システムコールは再起動が必要である |
| ESTRPIPE | 86 | Streams pipe error | ストリームパイプエラー |
| EUSERS | 87 | Too many users | ユーザー数が多過ぎる |
| ENOTSOCK | 88 | Socket operation on non-socket | ソケットではない |
| EDESTADDRREQ | 89 | Destination address required | 宛先のアドレスが必要 |
| EMSGSIZE | 90 | Message too long | メッセージが長過ぎる |
| EPROTOTYPE | 91 | Protocol wrong type for socket | ソケットに指定できないプロトコルタイプである |
| ENOPROTOOPT | 92 | Protocol not available | 利用できないプロトコルである |
| EPROTONOSUPPORT | 93 | Protocol not supported | 未対応のプロトコルである |
| ESOCKTNOSUPPORT | 94 | Socket type not supported | 未対応のソケットタイプである |
| EOPNOTSUPP | 95 | Operation not supported on transport endpoint | トランスポートエンドポイントで未対応の操作 |
| EPFNOSUPPORT | 96 | Protocol family not supported | 対応していないプロトコルファミリーである |
| EAFNOSUPPORT | 97 | Address family not supported by protocol | 対応していないアドレスファミリーである |
| EADDRINUSE | 98 | Address already in use | アドレスは既に使用されている |
| EADDRNOTAVAIL | 99 | Cannot assign requested address | アドレスが使用できない |
| ENETDOWN | 100 | Network is down | ネットワークは不通である |
| ENETUNREACH | 101 | Network is unreachable | ネットワークは到達不能である |
| ENETRESET | 102 | Network dropped connection because of reset | リセットでネットワーク接続が失われた |
| ECONNABORTED | 103 | Software caused connection abort | ソフトウェア要求により接続は中止された |
| ECONNRESET | 104 | Connection reset by peer | 接続は相手からリセットされた |
| ENOBUFS | 105 | No buffer space available | バッファーは容量不足である |
| EISCONN | 106 | Transport endpoint is already connected | トランスポートエンドポイントは既に接続されている |
| ENOTCONN | 107 | Transport endpoint is not connected | トランスポートエンドポイントは接続されていない |
| ESHUTDOWN | 108 | Cannot send after transport endpoint shutdown | トランスポートエンドポイントはシャットダウン中であり送信できない |
| ETOOMANYREFS | 109 | Too many references: cannot splice | 処理限界を超える多重参照である |
| ETIMEDOUT | 110 | Connection timed out | 操作はタイムアウトした |
| ECONNREFUSED | 111 | Connection refused | 接続は拒否された |
| EHOSTDOWN | 112 | Host is down | ホストはダウンしている |
| EHOSTUNREACH | 113 | No route to host | ホストに到達不能である |
| EALREADY | 114 | Operation already in progress | 操作は既に実行中である |
| EINPROGRESS | 115 | Operation now in progress | 操作は現在実行中である |
| ESTALE | 116 | Stale NFS file handle | NFSファイルハンドルが古い |
| EUCLEAN | 117 | Structure needs cleaning | 構造のクリーニングが必要 |
| ENOTNAM | 118 | Not a XENIX named type file | XENIX名前付きファイルではない |
| ENAVAIL | 119 | No XENIX semaphores available | XENIXセマフォは利用できない |
| EISNAM | 120 | Is a named type file | 名前付きファイルである |
| EREMOTEIO | 121 | Remote I/O error | リモートI/Oエラー |
| EDQUOT | 122 | Quota exceeded | クォータ超過 |
| ENOMEDIUM | 123 | No medium found | メディアが見つからない |
| EMEDIUMTYPE | 124 | Wrong medium type | 間違ったメディアタイプである |
| ECANCELED | 125 | Operation Canceled | 処理はキャンセルされた |
| ENOKEY | 126 | Required key not available | 要求された鍵が利用できない |
| EKEYEXPIRED | 127 | Key has expired | 鍵の期限が切れた |
| EKEYREVOKED | 128 | Key has been revoked | 鍵が無効となった |
| EKEYREJECTED | 129 | Key was rejected by service | 鍵がサーバーにより拒否された |
| robust mutexes | |||
| EOWNERDEAD | 130 | Owner died | 元のmutex所有者は既に終了した |
| ENOTRECOVERABLE | 131 | State not recoverable | 状態は回復不能 |
| ERFKILL | 132 | Operation not possible due to RF-kill | RF-killのため操作できない |
コメントなどを投稿するフォームは、日本語対応時のみ表示されます