EnderIce2 201ace7eec
refactor(userspace): build using cmake
Signed-off-by: EnderIce2 <enderice2@protonmail.com>
2025-03-15 23:05:17 +00:00

592 lines
16 KiB
C

/*
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 <https://www.gnu.org/licenses/>.
*/
#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, <signal.h>).
*/
#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- \<slash\> character and ends
* with one or more trailing \<slash\> 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__