Initial Spring 2016 commit.
This commit is contained in:
435
man/syscall/errno.html
Normal file
435
man/syscall/errno.html
Normal file
@@ -0,0 +1,435 @@
|
||||
<!--
|
||||
Copyright (c) 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009, 2013
|
||||
The President and Fellows of Harvard College.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the University nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<title>errno</title>
|
||||
<link rel="stylesheet" type="text/css" media="all" href="../man.css">
|
||||
</head>
|
||||
<body bgcolor=#ffffff>
|
||||
<h2 align=center>errno</h2>
|
||||
<h4 align=center>OS/161 Reference Manual</h4>
|
||||
|
||||
<h3>Name</h3>
|
||||
<p>
|
||||
errno - error code reporting
|
||||
</p>
|
||||
|
||||
<h3>Library</h3>
|
||||
<p>
|
||||
Standard C Library (libc, -lc)
|
||||
</p>
|
||||
|
||||
<h3>Synopsis</h3>
|
||||
<p>
|
||||
<tt>#include <errno.h></tt><br>
|
||||
<br>
|
||||
<tt>extern int errno;</tt>
|
||||
</p>
|
||||
|
||||
<h3>Description</h3>
|
||||
<p>
|
||||
When system calls, and sometimes other functions, fail, a code
|
||||
representing or describing the error condition is placed in the global
|
||||
variable <tt>errno</tt>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
When an operation succeeds, <tt>errno</tt> is not explicitly changed;
|
||||
however, operations that succeed are also not required to preserve the
|
||||
pre-existing value of <tt>errno</tt>.
|
||||
In general one must first check whether the operation failed, and only
|
||||
then interrogate <tt>errno</tt>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
A handful of functions in Standard C and POSIX are explicitly defined
|
||||
to preserve <tt>errno</tt> on success. These are typically functions
|
||||
with not-entirely-satisfactory interfaces where the only reliable way
|
||||
to detect failure is to clear <tt>errno</tt> to zero beforehand and
|
||||
check it afterwards. The most common/notable example (not currently
|
||||
available in OS/161's library) is <tt>strtol</tt>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<tt>errno</tt> may be a macro. In a multithreaded process it is almost
|
||||
invariably a macro. However, it is always an lvalue, that is, it may
|
||||
be assigned to.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Each numeric code has a symbolic name and a textual expansion. The
|
||||
symbolic names are used in source code; the textual expansions are
|
||||
printed out when errors are reported to users.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The textual expansions can be retrieved with
|
||||
<A HREF=../libc/strerror.html>strerror</A> or printed with
|
||||
<A HREF=../libc/err.html>err</A> or <A HREF=../libc/warn.html>warn</A>.
|
||||
</p>
|
||||
|
||||
<h3>Symbolic names</h3>
|
||||
<p>
|
||||
The following symbolic errors are defined in the OS/161 base system.
|
||||
You may add more at your pleasure; but be sure to read the notes in
|
||||
the file <tt>kern/errno.h</tt> that defines them.
|
||||
|
||||
<table width=90%>
|
||||
<tr><td width=5% rowspan=63> </td>
|
||||
<td width=10% valign=top>ENOSYS</td>
|
||||
<td><b>Function not implemented</b>: the action requested required
|
||||
functionality not yet implemented. This is also the error
|
||||
produced by attempting to make nonexistent system
|
||||
calls.</td></tr>
|
||||
|
||||
<tr><td valign=top>ENOMEM</td>
|
||||
<td><b>Out of memory</b>: a memory allocation failed. This normally
|
||||
means that a process has used up all the memory available to
|
||||
it. (This may be due to limits or because it has used up all
|
||||
the memory available to the system.) It may also mean that
|
||||
memory allocation within the kernel has failed.</td></tr>
|
||||
|
||||
<tr><td valign=top>EAGAIN</td>
|
||||
<td><b>Operation would block</b>: some resource is temporarily
|
||||
unavailable, or a non-blocking I/O operation (if such things
|
||||
exist) could not be completed without waiting. Historically,
|
||||
the message was "Try again later"; in 4.4BSD EAGAIN and the
|
||||
old EWOULDBLOCK error code were folded together.</td></tr>
|
||||
|
||||
<tr><td valign=top>EINTR</td>
|
||||
<td><b>Interrupted system call</b>: handling of a system call was
|
||||
interrupted by the delivery of a signal. (If you have
|
||||
signals.)</td></tr>
|
||||
|
||||
<tr><td valign=top>EFAULT</td>
|
||||
<td><b>Bad memory reference</b>: a pointer passed as an argument was
|
||||
not valid. Within the kernel, the <tt>copyin</tt> family of
|
||||
functions produces this error when given an invalid
|
||||
pointer.</td></tr>
|
||||
|
||||
<tr><td valign=top>ENAMETOOLONG</td>
|
||||
<td><b>String too long</b>: a string passed as an argument was too
|
||||
long to process.</td></tr>
|
||||
|
||||
<tr><td valign=top>EINVAL</td>
|
||||
<td><b>Invalid argument</b>: an argument passed to a command or system
|
||||
call was badly formed, invalid, or nonsensical, in a way for
|
||||
which no more specific error code is defined.</td></tr>
|
||||
|
||||
<tr><td valign=top>EPERM</td>
|
||||
<td><b>Operation not permitted</b>: the requested operation is
|
||||
restricted to privileged users, or, in some cases, prohibited
|
||||
entirely. Note that "permission denied" is not EPERM.</td></tr>
|
||||
|
||||
<tr><td valign=top>EACCES</td>
|
||||
<td><b>Permission denied</b>: the current process's credentials do not
|
||||
allow the desired form of access to the target object
|
||||
according to its permission settings. Note that "permission
|
||||
denied" is not EPERM.</td></tr>
|
||||
|
||||
<tr><td valign=top>EMPROC</td>
|
||||
<td><b>Too many processes</b>: the current user ID has reached its
|
||||
limit of simultaneous running processes. In Unix, this is
|
||||
spelled EPROCLIM.</td></tr>
|
||||
|
||||
<tr><td valign=top>ENPROC</td>
|
||||
<td><b>Too many processes on system</b>: the system process table is
|
||||
full. (Void where impossible or prohibited by law.)</td></tr>
|
||||
|
||||
<tr><td valign=top>ENOEXEC</td>
|
||||
<td><b>File is not executable</b>: an
|
||||
<A HREF=../syscall/execv.html>execv</A> operation was
|
||||
attempted but the kernel was unable to run the requested
|
||||
program.</td></tr>
|
||||
|
||||
<tr><td valign=top>E2BIG</td>
|
||||
<td><b>Argument list too long</b>: the space taken up by the
|
||||
<tt>argv[]</tt> strings (and environment strings, where
|
||||
applicable) passed to a newly started program is larger than
|
||||
the system allows. The limit on this space is given by the
|
||||
symbol <tt>ARG_MAX</tt>.</td></tr>
|
||||
|
||||
<tr><td valign=top>ESRCH</td>
|
||||
<td><b>No such process</b>: the supplied process ID does not name any
|
||||
of the currently running processes.</td></tr>
|
||||
|
||||
<tr><td valign=top>ECHILD</td>
|
||||
<td><b>No child processes</b>: the current process has no exited child
|
||||
processes whose exit status has not yet been collected with <A
|
||||
HREF=../syscall/waitpid.html>waitpid</A>.</td></tr>
|
||||
|
||||
<tr><td valign=top>ENOTDIR</td>
|
||||
<td><b>Not a directory</b>: a directory was expected and a
|
||||
non-directory filesystem object was found.</td></tr>
|
||||
|
||||
<tr><td valign=top>EISDIR</td>
|
||||
<td><b>Is a directory</b>: a non-directory was expected and a
|
||||
directory was found.</td></tr>
|
||||
|
||||
<tr><td valign=top>ENOENT</td>
|
||||
<td><b>No such file or directory</b>: the requested filesystem object
|
||||
does/did not exist.</td></tr>
|
||||
|
||||
<tr><td valign=top>ELOOP</td>
|
||||
<td><b>Too many levels of symbolic links</b>: pathname lookup crossed
|
||||
more than the maximum allowed number of symbolic links.
|
||||
Usually means a link points to itself, or a family of links
|
||||
has been arranged into a loop. (If you have symbolic
|
||||
links.)</td></tr>
|
||||
|
||||
<tr><td valign=top>ENOTEMPTY</td>
|
||||
<td><b>Directory not empty</b>: a directory must be empty of
|
||||
everything (except <tt>.</tt> and <tt>..</tt>) before it may
|
||||
be removed.</td></tr>
|
||||
|
||||
<tr><td valign=top>EEXIST</td>
|
||||
<td><b>File exists</b>: a filesystem object that was expected not to
|
||||
exist did in fact already exist.</td></tr>
|
||||
|
||||
<tr><td valign=top>EMLINK</td>
|
||||
<td><b>Too many hard links</b>: the maximum number of hard links to
|
||||
the target file already exist.</td></tr>
|
||||
|
||||
<tr><td valign=top>EXDEV</td>
|
||||
<td><b>Cross-device link</b>: an attempt was made to instruct one
|
||||
filesystem to handle files on another filesystem.</td></tr>
|
||||
|
||||
<tr><td valign=top>ENODEV</td>
|
||||
<td><b>No such device</b>: the requested device or device driver does
|
||||
not exist.</td></tr>
|
||||
|
||||
<tr><td valign=top>ENXIO</td>
|
||||
<td><b>Device not available</b>: the requested device exists but is
|
||||
not available (is not mounted, is powered off, etc.)</td></tr>
|
||||
|
||||
<tr><td valign=top>EBUSY</td>
|
||||
<td><b>Device busy</b>: the requested object cannot be used (or,
|
||||
perhaps, released) because something else is using
|
||||
it.</td></tr>
|
||||
|
||||
<tr><td valign=top>EMFILE</td>
|
||||
<td><b>Too many open files</b>: the process file table is full, so the
|
||||
process cannot open more files.</td></tr>
|
||||
|
||||
<tr><td valign=top>ENFILE</td>
|
||||
<td><b>Too many open files in system</b>: a system-wide limit of some
|
||||
sort, if any exists, on the number of open files has been
|
||||
reached. Void where not possible.</td></tr>
|
||||
|
||||
<tr><td valign=top>EBADF</td>
|
||||
<td><b>Bad file number</b>: a file operation was requested on an
|
||||
illegal file handle, or a file handle that was not open. Or, a
|
||||
write operation was attempted on a file handle that was open
|
||||
only for read or vice-versa.</td></tr>
|
||||
|
||||
<tr><td valign=top>EIOCTL</td>
|
||||
<td><b>Invalid or inappropriate ioctl</b>: an operation requested via
|
||||
the <A HREF=../syscall/ioctl.html>ioctl</A> system call was
|
||||
not defined or could not be performed on the indicated
|
||||
object. In Unix, for historical reasons, this is spelled
|
||||
ENOTTY, with the historic message "Not a
|
||||
typewriter".</td></tr>
|
||||
|
||||
<tr><td valign=top>EIO</td>
|
||||
<td><b>Input/output error</b>: a hardware-level error occured on a
|
||||
device. Media errors on disks fall into this
|
||||
category.</td></tr>
|
||||
|
||||
<tr><td valign=top>ESPIPE</td>
|
||||
<td><b>Illegal seek</b>: a seek operation was attempted on a
|
||||
sequential object where seeking makes no sense, like a
|
||||
pipe or terminal.</td></tr>
|
||||
|
||||
<tr><td valign=top>EPIPE</td>
|
||||
<td><b>Broken pipe</b>: a write was made to a pipe or socket object
|
||||
with nobody to read it.</td></tr>
|
||||
|
||||
<tr><td valign=top>EROFS</td>
|
||||
<td><b>Read-only file system</b>: an attempt was made to modify a
|
||||
filesystem that was mounted read-only. (If you have read-only
|
||||
mounts.)</td></tr>
|
||||
|
||||
<tr><td valign=top>ENOSPC</td>
|
||||
<td><b>No space left on device</b>: the target filesystem is
|
||||
full.</td></tr>
|
||||
|
||||
<tr><td valign=top>EDQUOT</td>
|
||||
<td><b>Disc</b><font size=-2><i>(sic)</i></font><b> quota
|
||||
exceeded</b>: the current user ID's quota (of space or
|
||||
number of files) on the target filesystem has been used up.
|
||||
(If you have disk quotas.)</td></tr>
|
||||
|
||||
<tr><td valign=top>EFBIG</td>
|
||||
<td><b>File too large</b>: an attempt was made to exceed the target
|
||||
filesystem's maximum file size, or a per-user limit on maximum
|
||||
file size was reached, if such a thing exists.</td></tr>
|
||||
|
||||
<tr><td valign=top>EFTYPE</td>
|
||||
<td><b>Invalid file type or format</b>: the file provided was the
|
||||
wrong kind of file or contained invalid syntax.</td></tr>
|
||||
|
||||
<tr><td valign=top>EDOM</td>
|
||||
<td><b>Argument out of range</b>: the (numeric) argument provided was
|
||||
outside the values upon which the operation is defined. For
|
||||
example, attempting to evaluate the logarithm of
|
||||
zero produces this error. It is sometimes also used for
|
||||
non-numeric arguments where the idea of being "out of range"
|
||||
still makes sense.</td></tr>
|
||||
|
||||
<tr><td valign=top>ERANGE</td>
|
||||
<td><b>Result out of range</b>: the result of an operation did not fit
|
||||
in the space provided or could not be represented. Usually
|
||||
used with numeric values. String values that don't fit usually
|
||||
result in ENAMETOOLONG, or in its specific case,
|
||||
E2BIG.</td></tr>
|
||||
|
||||
<tr><td valign=top>EILSEQ</td>
|
||||
<td><b>Invalid multibyte character sequence</b>: the input string
|
||||
contained a byte sequence whose value is undefined or whose
|
||||
use is restricted. Only applicable when a multibyte character
|
||||
set is in use, and if someone has added locale
|
||||
support.</td></tr>
|
||||
|
||||
<tr><td valign=top>ENOTSOCK</td>
|
||||
<td><b>Not a socket</b>: the file handle in question does not refer to
|
||||
a socket, but a socket was expected.</td></tr>
|
||||
|
||||
<tr><td valign=top>EISSOCK</td>
|
||||
<td><b>Is a socket</b>: the file handle in question refers to a
|
||||
socket, but a socket was not expected. In Unix this is spelled
|
||||
EOPNOTSUPP, and prints as "Operation not supported on
|
||||
socket".</td></tr>
|
||||
|
||||
<tr><td valign=top>EISCONN</td>
|
||||
<td><b>Socket is already connected</b>: given the protocol in use, the
|
||||
operation requires a socket that has not yet been connected,
|
||||
but the socket provided is in fact connected.</td></tr>
|
||||
|
||||
<tr><td valign=top>ENOTCONN</td>
|
||||
<td><b>Socket is not connected</b>: given the protocol in use, the
|
||||
operation requires a connected socket, but no connection has
|
||||
yet been made.</td></tr>
|
||||
|
||||
<tr><td valign=top>ESHUTDOWN</td>
|
||||
<td><b>Socket has been shut down</b>: the operation requires a running
|
||||
socket, but the socket provided has been closed
|
||||
down.</td></tr>
|
||||
|
||||
<tr><td valign=top>EPFNOSUPPORT</td>
|
||||
<td><b>Protocol family not supported</b>: the requested protocol
|
||||
family (PF_INET, PF_LOCAL, etc.) is not supported by the
|
||||
system.</td></tr>
|
||||
|
||||
<tr><td valign=top>ESOCKTNOSUPPORT</td>
|
||||
<td><b>Socket type not supported</b>: the requested socket type
|
||||
(SOCK_STREAM, SOCK_DGRAM, etc.) is not supported by the
|
||||
system.</td></tr>
|
||||
|
||||
<tr><td valign=top>EPROTONOSUPPORT</td>
|
||||
<td><b>Protocol not supported</b>: the protocol requested for a socket
|
||||
was not one supported by the system.</td></tr>
|
||||
|
||||
<tr><td valign=top>EPROTOTYPE</td>
|
||||
<td><b>Protocol wrong type for socket</b>: the protocol requested for
|
||||
a socket was not one supported by the requested socket type
|
||||
and protocol family.</td></tr>
|
||||
|
||||
<tr><td valign=top>EAFNOSUPPORT</td>
|
||||
<td><b>Address family not supported by protocol family</b>: the
|
||||
address family named in a struct sockaddr (AF_INET, AF_LOCAL,
|
||||
etc.) is not supported by the protocol family used to create
|
||||
the socket (PF_INET, PF_LOCAL, etc.). In practice each
|
||||
protocol family has exactly one address family and the values
|
||||
of AF_* and PF_* are often, if incorrectly, used
|
||||
interchangeably. If you run into this error in real life, it
|
||||
usually means you didn't initialize your sockaddr structures
|
||||
correctly.</td></tr>
|
||||
|
||||
<tr><td valign=top>ENOPROTOOPT</td>
|
||||
<td><b>Protocol option not available</b>: the protocol option that was
|
||||
requested is not supported or cannot be activated.</td></tr>
|
||||
|
||||
<tr><td valign=top>EADDRINUSE</td>
|
||||
<td><b>Address already in use</b>: the requested socket address is
|
||||
already in use by another socket somewhere on the
|
||||
system.</td></tr>
|
||||
|
||||
<tr><td valign=top>EADDRNOTAVAIL</td>
|
||||
<td><b>Cannot assign requested address</b>: the requested socket
|
||||
address is unavailable. Usually caused by attempting to bind a
|
||||
socket to the IP address of another machine. </td></tr>
|
||||
|
||||
<tr><td valign=top>ENETDOWN</td>
|
||||
<td><b>Network is down</b>: the network or subnet needed is
|
||||
offline.</td></tr>
|
||||
|
||||
<tr><td valign=top>ENETUNREACH</td>
|
||||
<td><b>Network is unreachable</b>: the network or subnet needed cannot
|
||||
be reached from here, possibly due to routing problems on the
|
||||
network, possibly due to local configuration
|
||||
trouble.</td></tr>
|
||||
|
||||
<tr><td valign=top>EHOSTDOWN</td>
|
||||
<td><b>Host is down</b>: the specific machine requested is
|
||||
offline.</td></tr>
|
||||
|
||||
<tr><td valign=top>EHOSTUNREACH</td>
|
||||
<td><b>Host is unreachable</b>: the specific machine requested cannot
|
||||
be reached from here.</td></tr>
|
||||
|
||||
<tr><td valign=top>ECONNREFUSED</td>
|
||||
<td><b>Connection refused</b>: the remote machine is not listening for
|
||||
connections on the requested port.</td></tr>
|
||||
|
||||
<tr><td valign=top>ETIMEDOUT</td>
|
||||
<td><b>Connection timed out</b>: there was no response from the remote
|
||||
machine. It may be down, it may not be listening, or it may
|
||||
not be receiving our packets at all.</td></tr>
|
||||
|
||||
<tr><td valign=top>ECONNRESET</td>
|
||||
<td><b>Connection reset by peer</b>: the connection was abandoned by
|
||||
the remote host. Usually seen on already-open connections
|
||||
after the remote machine reboots and thereby loses its network
|
||||
state. Sometimes also caused by defective network devices
|
||||
between the local and remote hosts.</td></tr>
|
||||
|
||||
<tr><td valign=top>EMSGSIZE</td>
|
||||
<td><b>Message too large</b>: an internal protocol length limit was
|
||||
exceeded.</td></tr>
|
||||
|
||||
<tr><td valign=top>ENOTSUP</td>
|
||||
<td><b>Threads operation not supported</b>: a special error code
|
||||
defined by the POSIX threads standard, which is a "special"
|
||||
interface.</td></tr>
|
||||
|
||||
</table>
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user