/* This file is part of Fennix Kernel. Fennix Kernel is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Fennix Kernel is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Fennix Kernel. If not, see . */ #ifndef __FENNIX_API_ERRNO_H__ #define __FENNIX_API_ERRNO_H__ /** * The documentation for these error codes are from: * https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html * * Full list: * https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/basedefs/errno.h.html */ /** * No Error */ #define EOK 0 /** * Argument list too long. The sum of the number of bytes used by the * new process image's argument list and environment list is greater * than the system-imposed limit of {ARG_MAX} bytes. * or: * Lack of space in an output buffer. * or: * Argument is greater than the system-imposed maximum. */ #define E2BIG 1 /** * Permission denied. An attempt was made to access a file in a way * forbidden by its file access permissions. */ #define EACCES 2 /** * Address in use. The specified address is in use. */ #define EADDRINUSE 3 /** * Address not available. The specified address is not available from * the local system. */ #define EADDRNOTAVAIL 4 /** * Address family not supported. The implementation does not support * the specified address family, or the specified address is not a * valid address for the address family of the specified socket. */ #define EAFNOSUPPORT 5 /** * Resource temporarily unavailable. This is a temporary condition * and later calls to the same routine may complete normally. */ #define EAGAIN 6 /** * Connection already in progress. A connection request is already in * progress for the specified socket. */ #define EALREADY 7 /** * Bad file descriptor. A file descriptor argument is out of range, * refers to no open file, or a read (write) request is made to a * file that is only open for writing (reading). */ #define EBADF 8 /** * Bad message. During a read(), getmsg(), getpmsg(), or ioctl() * I_RECVFD request to a STREAMS device, a message arrived at the * head of the STREAM that is inappropriate for the function * receiving the message. * read() * Message waiting to be read on a STREAM is not a data message. * getmsg() or getpmsg() * A file descriptor was received instead of a control message. * ioctl() * Control or data information was received instead of a file * descriptor when I_RECVFD was specified. */ #define EBADMSG 9 /** * Resource busy. An attempt was made to make use of a system * resource that is not currently available, as it is being * used by another process in a manner that would have * conflicted with the request being made by this process. */ #define EBUSY 10 /** * Operation canceled. The associated asynchronous operation was * canceled before completion. */ #define ECANCELED 11 /** * No child process. A wait(), waitid(), or waitpid() function was * executed by a process that had no existing or unwaited-for * child process. */ #define ECHILD 12 /** * Connection aborted. The connection has been aborted. */ #define ECONNABORTED 13 /** * Connection refused. An attempt to connect to a socket was refused * because there was no process listening or because the queue of * connection requests was full and the underlying protocol does not * support retransmissions. */ #define ECONNREFUSED 14 /** * Connection reset. The connection was forcibly closed by the peer. */ #define ECONNRESET 15 /** * Resource deadlock would occur. An attempt was made to lock a system * resource that would have resulted in a deadlock situation. */ #define EDEADLK 16 /** * Destination address required. No bind address was established. */ #define EDESTADDRREQ 17 /** * Domain error. An input argument is outside the defined domain of the * mathematical function (defined in the ISO C standard). */ #define EDOM 18 /** * Reserved. */ #define EDQUOT 19 /** * File exists. An existing file was mentioned in an inappropriate * context; for example, as a new link name in the link() function. */ #define EEXIST 20 /** * Bad address. The system detected an invalid address in attempting * to use an argument of a call. The reliable detection of this error * cannot be guaranteed, and when not detected may result in the * generation of a signal, indicating an address violation, which is * sent to the process. */ #define EFAULT 21 /** * File too large. The size of a file would exceed the maximum file * size of an implementation or offset maximum established in the * corresponding file description. */ #define EFBIG 22 /** * Host is unreachable. The destination host cannot be reached * (probably because the host is down or a remote router cannot * reach it). */ #define EHOSTUNREACH 23 /** * Identifier removed. Returned during XSI interprocess communication * if an identifier has been removed from the system. */ #define EIDRM 24 /** * Illegal byte sequence. A wide-character code has been detected that * does not correspond to a valid character, or a byte sequence does * not form a valid wide-character code (defined in the ISO C standard). */ #define EILSEQ 25 /** * Operation in progress. This code is used to indicate that an * asynchronous operation has not yet completed. * or: * O_NONBLOCK is set for the socket file descriptor and the connection * cannot be immediately established. */ #define EINPROGRESS 26 /** * Interrupted function call. An asynchronous signal was caught by the * process during the execution of an interruptible function. If the * signal handler performs a normal return, the interrupted function * call may return this condition (see the Base Definitions volume * of POSIX.1-2017, ). */ #define EINTR 27 /** * Invalid argument. Some invalid argument was supplied; for example, * specifying an undefined signal in a signal() function or a * kill() function. */ #define EINVAL 28 /** * Input/output error. Some physical input or output error has occurred. * This error may be reported on a subsequent operation on the same * file descriptor. Any other error-causing operation on the same file * descriptor may cause the [EIO] error indication to be lost. */ #define EIO 29 /** * Socket is connected. The specified socket is already connected. */ #define EISCONN 30 /** * Is a directory. An attempt was made to open a directory with write * mode specified. */ #define EISDIR 31 /** * Symbolic link loop. A loop exists in symbolic links encountered * during pathname resolution. This error may also be returned if * more than {SYMLOOP_MAX} symbolic links are encountered during * pathname resolution. */ #define ELOOP 32 /** * File descriptor value too large or too many open streams. An * attempt was made to open a file descriptor with a value greater * than or equal to {OPEN_MAX}, or an attempt was made to open more * than the maximum number of streams allowed in the process. */ #define EMFILE 33 /** * Too many links. An attempt was made to have the link count of a * single file exceed {LINK_MAX}. */ #define EMLINK 34 /** * Message too large. A message sent on a transport provider was * larger than an internal message buffer or some other network limit. * or: * Inappropriate message buffer length. */ #define EMSGSIZE 35 /** * Reserved. */ #define EMULTIHOP 36 /** * Filename too long. The length of a pathname exceeds {PATH_MAX} and * the implementation considers this to be an error, or a pathname * component is longer than {NAME_MAX}. This error may also occur * when pathname substitution, as a result of encountering a * symbolic link during pathname resolution, results in a pathname * string the size of which exceeds {PATH_MAX}. */ #define ENAMETOOLONG 37 /** * Network is down. The local network interface used to reach the * destination is down. */ #define ENETDOWN 38 /** * The connection was aborted by the network. */ #define ENETRESET 39 /** * Network unreachable. No route to the network is present. */ #define ENETUNREACH 40 /** * Too many files open in system. Too many files are currently open * in the system. The system has reached its predefined limit for * simultaneously open files and temporarily cannot accept requests * to open another one. */ #define ENFILE 41 /** * No buffer space available. Insufficient buffer resources were * available in the system to perform the socket operation. */ #define ENOBUFS 42 /** * No message available. No message is available on the STREAM head * read queue. */ #define ENODATA 43 /** * No such device. An attempt was made to apply an inappropriate * function to a device; for example, trying to read a write-only * device such as a printer. */ #define ENODEV 44 /** * No such file or directory. A component of a specified pathname * does not exist, or the pathname is an empty string. */ #define ENOENT 45 /** * Executable file format error. A request is made to execute a file * that, although it has appropriate privileges, is not in the * format required by the implementation for executable files. */ #define ENOEXEC 46 /** * No locks available. A system-imposed limit on the number of * simultaneous file and record locks has been reached and no more * are currently available. */ #define ENOLCK 47 /** * Reserved. */ #define ENOLINK 48 /** * Not enough space. The new process image requires more memory than * is allowed by the hardware or system-imposed memory management * constraints. */ #define ENOMEM 49 /** * No message of the desired type. The message queue does not contain * a message of the required type during XSI interprocess communication. */ #define ENOMSG 50 /** * Protocol not available. The protocol option specified to * setsockopt() is not supported by the implementation. */ #define ENOPROTOOPT 51 /** * No space left on a device. During the write() function on a * regular file or when extending a directory, there is no free * space left on the device. */ #define ENOSPC 52 /** * No STREAM resources. Insufficient STREAMS memory resources are * available to perform a STREAMS-related function. This is a * temporary condition; it may be recovered from if other * processes release resources. */ #define ENOSR 53 /** * Not a STREAM. A STREAM function was attempted on a file descriptor * that was not associated with a STREAMS device. */ #define ENOSTR 54 /** * Functionality not supported. An attempt was made to use optional * functionality that is not supported in this implementation. */ #define ENOSYS 55 /** * Socket not connected. The socket is not connected. */ #define ENOTCONN 56 /** * Not a directory. A component of the specified pathname exists, but * it is not a directory, when a directory was expected; or an * attempt was made to create a non-directory file, and the specified * pathname contains at least one non- \ character and ends * with one or more trailing \ characters. */ #define ENOTDIR 57 /** * Directory not empty. A directory other than an empty directory * was supplied when an empty directory was expected. */ #define ENOTEMPTY 58 /** * State not recoverable. The state protected by a robust mutex * is not recoverable. */ #define ENOTRECOVERABLE 59 /** * Not a socket. The file descriptor does not refer to a socket. */ #define ENOTSOCK 60 /** * Not supported. The implementation does not support the requested * feature or value. */ #define ENOTSUP 61 /** * Inappropriate I/O control operation. A control function has been * attempted for a file or special file for which the operation * is inappropriate. */ #define ENOTTY 62 /** * No such device or address. Input or output on a special file * refers to a device that does not exist, or makes a request * beyond the capabilities of the device. It may also occur when, * for example, a tape drive is not on-line. */ #define ENXIO 63 /** * Operation not supported on socket. The type of socket (address * family or protocol) does not support the requested operation. */ #define EOPNOTSUPP 64 /** * Value too large to be stored in data type. An operation was * attempted which would generate a value that is outside the * range of values that can be represented in the relevant data * type or that are allowed for a given data item. */ #define EOVERFLOW 65 /** * Previous owner died. The owner of a robust mutex terminated * while holding the mutex lock. */ #define EOWNERDEAD 66 /** * Operation not permitted. An attempt was made to perform an * operation limited to processes with appropriate privileges or * to the owner of a file or other resource. */ #define EPERM 67 /** * Broken pipe. A write was attempted on a socket, pipe, or FIFO * for which there is no process to read the data. */ #define EPIPE 68 /** * Protocol error. Some protocol error occurred. This error is * device-specific, but is generally not related to a * hardware failure. */ #define EPROTO 69 /** * Protocol not supported. The protocol is not supported by the * address family, or the protocol is not supported by * the implementation. */ #define EPROTONOSUPPORT 70 /** * Protocol wrong type for socket. The socket type is not * supported by the protocol. */ #define EPROTOTYPE 71 /** * Result too large or too small. The result of the function * is too large (overflow) or too small (underflow) to be * represented in the available space. */ #define ERANGE 72 /** * Read-only file system. An attempt was made to modify a file * or directory on a file system that is read-only. */ #define EROFS 73 /** * Invalid seek. An attempt was made to access the file offset * associated with a pipe or FIFO. */ #define ESPIPE 74 /** * No such process. No process can be found corresponding to that * specified by the given process ID. */ #define ESRCH 75 /** * Reserved. */ #define ESTALE 76 /** * STREAM ioctl() timeout. The timer set for a STREAMS ioctl() call * has expired. The cause of this error is device-specific and could * indicate either a hardware or software failure, or a timeout * value that is too short for the specific operation. The status * of the ioctl() operation is unspecified. */ #define ETIME 77 /** * Connection timed out. The connection to a remote machine has * timed out. * If the connection timed out during execution of the function that * reported this error (as opposed to timing out prior to the * function being called), it is unspecified whether the function * has completed some or all of the documented behavior associated * with a successful completion of the function. * or: * Operation timed out. The time limit associated with the operation * was exceeded before the operation completed. */ #define ETIMEDOUT 78 /** * Text file busy. An attempt was made to execute a pure-procedure * program that is currently open for writing, or an attempt has * been made to open for writing a pure-procedure program that * is being executed. */ #define ETXTBSY 79 /** * Operation would block. An operation on a socket marked as * non-blocking has encountered a situation such as no data available * that otherwise would have caused the function to suspend execution. */ #define EWOULDBLOCK 80 /** * Improper link. A link to a file on another file system was attempted. */ #define EXDEV 81 #ifdef __kernel__ #define __ERRNO_MAX 82 #endif #endif // !__FENNIX_API_ERRNO_H__