436 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			436 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!--
 | |
| 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>
 |