Add a few new errnos and improve documentation.
authorPeter Avalos <pavalos@theshell.com>
Sat, 14 Feb 2009 23:11:36 +0000 (18:11 -0500)
committerPeter Avalos <pavalos@theshell.com>
Tue, 7 Apr 2009 07:09:22 +0000 (21:09 -1000)
Some of these aren't used, but are required by POSIX.

Obtained-from: FreeBSD

lib/libc/gen/errlst.c
lib/libc/sys/intro.2
sys/sys/errno.h

index 8a03306..ae445e1 100644 (file)
  * 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. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. 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.
@@ -31,6 +27,7 @@
  * SUCH DAMAGE.
  *
  * @(#)errlst.c        8.2 (Berkeley) 11/16/93
+ * $FreeBSD: src/lib/libc/gen/errlst.c,v 1.9 2007/01/09 00:27:53 imp Exp $
  * $DragonFly: src/lib/libc/gen/errlst.c,v 1.3 2005/05/03 07:29:04 joerg Exp $
  */
 
@@ -142,6 +139,15 @@ const char *const sys_errlist[] = {
        "Value too large to be stored in data type", /* 84 - EOVERFLOW */
        "Operation canceled",                   /* 85 - ECANCELED */
        "Illegal byte sequence",                /* 86 - EILSEQ */
+       "Attribute not found",                  /* 87 - ENOATTR */
+
+/* General */
+       "Programming error",                    /* 88 - EDOOFUS */
+
+       "Bad message",                          /* 89 - EBADMSG */
+       "Multihop attempted",                   /* 90 - EMULTIHOP */
+       "Link has been severed",                /* 91 - ENOLINK */
+       "Protocol error",                       /* 92 - EPROTO */
 };
 __thread int errno;
 const int sys_nerr = sizeof(sys_errlist) / sizeof(sys_errlist[0]);
index 5806af4..1d6dac7 100644 (file)
@@ -9,10 +9,6 @@
 .\" 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. All advertising materials mentioning features or use of this software
-.\"    must display the following acknowledgement:
-.\"    This product includes software developed by the University of
-.\"    California, Berkeley and its contributors.
 .\" 4. 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.
@@ -30,7 +26,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)intro.2    8.5 (Berkeley) 2/27/95
-.\" $FreeBSD: src/lib/libc/sys/intro.2,v 1.21.2.7 2003/02/24 01:01:48 trhodes Exp $
+.\" $FreeBSD: src/lib/libc/sys/intro.2,v 1.48 2007/01/09 00:28:14 imp Exp $
 .\" $DragonFly: src/lib/libc/sys/intro.2,v 1.7 2007/04/11 09:12:08 swildner Exp $
 .\"
 .Dd February 27, 1995
@@ -49,7 +45,7 @@ their error returns, and other common definitions and concepts.
 .\".Pp
 .\".Sy System call restart
 .\".Pp
-.\"<more later...>
+.\"(more later...)
 .Sh RETURN VALUES
 Nearly all of the system calls provide an error number referenced via
 the external identifier
@@ -76,7 +72,8 @@ The
 .Fn __error
 function returns a pointer the thread specific
 .Va errno
-variable. As it is defined
+variable.
+As it is defined
 .Vt inline ,
 it will compile to a no-op, effectively producing
 the same code as if the define wouldn't exist.
@@ -121,7 +118,7 @@ or
 was caught by the process during the execution of an interruptible
 function.
 If the signal handler performs a normal return, the
-interrupted function call will seem to have returned the error condition.
+interrupted system call will seem to have returned the error condition.
 .It Er 5 EIO Em "Input/output error" .
 Some physical input or output error occurred.
 This error will not be reported until a subsequent operation on the same file
@@ -136,8 +133,7 @@ loaded on a drive.
 .It Er 7 E2BIG Em "Argument list too long" .
 The number of bytes used for the argument and environment
 list of the new process exceeded the current limit
-of 65536 bytes
-.Pf ( Dv NCARGS
+.Dv ( NCARGS
 in
 .In sys/param.h ) .
 .It Er 8 ENOEXEC Em "Exec format error" .
@@ -181,7 +177,7 @@ in a manner which would have conflicted with the request.
 An existing file was mentioned in an inappropriate context,
 for instance, as the new link name in a
 .Xr link 2
-function.
+system call.
 .It Er 18 EXDEV Em "Cross-device link" .
 A hard link to a file on another file system
 was attempted.
@@ -200,9 +196,10 @@ Some invalid argument was supplied.
 (For example,
 specifying an undefined signal to a
 .Xr signal 3
-or
+function
+or a
 .Xr kill 2
-function).
+system call).
 .It Er 23 ENFILE Em "Too many open files in system" .
 Maximum number of file descriptors allowable on the system
 has been reached and a requests for an open cannot be satisfied
@@ -212,7 +209,7 @@ until at least one has been closed.
 open files per process is 64.)
 The
 .Xr getdtablesize 2
-function will obtain the current limit.
+system call will obtain the current limit.
 .It Er 25 ENOTTY Em "Inappropriate ioctl for device" .
 A control function (see
 .Xr ioctl 2 )
@@ -225,10 +222,7 @@ while the pure procedure file was being executed an
 .Xr open 2
 call requested write access.
 .It Er 27 EFBIG Em "File too large" .
-The size of a file exceeded the maximum (about
-.if t 2\u\s-231\s+2\d
-.if n 2.1E9
-bytes).
+The size of a file exceeded the maximum.
 .It Er 28 ENOSPC Em "No space left on device" .
 A
 .Xr write 2
@@ -241,7 +235,7 @@ on the file system.
 .It Er 29 ESPIPE Em "Illegal seek" .
 An
 .Xr lseek 2
-function was issued on a socket, pipe or
+system call was issued on a socket, pipe or
 .Tn FIFO .
 .It Er 30 EROFS Em "Read-only file system" .
 An attempt was made to modify a file or directory
@@ -312,7 +306,7 @@ The protocol family has not been configured into the
 system or no implementation for it exists.
 .It Er 47 EAFNOSUPPORT Em "Address family not supported by protocol family" .
 An address incompatible with the requested protocol was used.
-For example, you shouldn't necessarily expect to be able to use
+For example, you should not necessarily expect to be able to use
 .Tn NS
 addresses with
 .Tn ARPA
@@ -332,7 +326,8 @@ The host you were connected to crashed and rebooted.
 .It Er 53 ECONNABORTED Em "Software caused connection abort" .
 A connection abort was caused internal to your host machine.
 .It Er 54 ECONNRESET Em "Connection reset by peer" .
-A connection was forcibly closed by a peer.  This normally
+A connection was forcibly closed by a peer.
+This normally
 results from a loss of the connection on the remote socket
 due to a timeout or a reboot.
 .It Er 55 ENOBUFS Em "\&No buffer space available" .
@@ -363,23 +358,29 @@ A
 or
 .Xr send 2
 request failed because the connected party did not
-properly respond after a period of time.  (The timeout
+properly respond after a period of time.
+(The timeout
 period is dependent on the communication protocol.)
 .It Er 61 ECONNREFUSED Em "Connection refused" .
 No connection could be made because the target machine actively
-refused it.  This usually results from trying to connect
+refused it.
+This usually results from trying to connect
 to a service that is inactive on the foreign host.
 .It Er 62 ELOOP Em "Too many levels of symbolic links" .
 A path name lookup involved more than 32
 .Pq Dv MAXSYMLINKS
 symbolic links.
 .It Er 63 ENAMETOOLONG Em "File name too long" .
-A component of a path name exceeded 255
-.Pq Dv MAXNAMELEN
+A component of a path name exceeded
+.Brq Dv NAME_MAX
 characters, or an entire
-path name exceeded 1023
-.Pq Dv MAXPATHLEN Ns -1
+path name exceeded
+.Brq Dv PATH_MAX
 characters.
+(See also the description of
+.Dv _PC_NO_TRUNC
+in
+.Xr pathconf 2 . )
 .It Er 64 EHOSTDOWN Em "Host is down" .
 A socket operation failed because the destination host was down.
 .It Er 65 EHOSTUNREACH Em "No route to host" .
@@ -405,7 +406,7 @@ was exhausted.
 .It Er 70 ESTALE Em "Stale NFS file handle" .
 An attempt was made to access an open file (on an
 .Tn NFS
-filesystem)
+file system)
 which is now unavailable as referenced by the file descriptor.
 This may indicate the file was deleted on the
 .Tn NFS
@@ -429,7 +430,7 @@ on the remote host
 .It Er 76 EPROCUNAVAIL Em "Bad procedure for program" .
 An
 .Tn RPC
-call was attempted for a procedure which doesn't exist
+call was attempted for a procedure which does not exist
 in the remote program.
 .It Er 77 ENOLCK Em "No locks available" .
 A system-imposed limit on the number of simultaneous file
@@ -443,11 +444,11 @@ the wrong format.
 .It Er 80 EAUTH Em "Authentication error" .
 Attempted to use an invalid authentication ticket to mount a
 .Tn NFS
-filesystem.
+file system.
 .It Er 81 ENEEDAUTH Em "Need authenticator" .
 An authentication ticket must be obtained before the given
 .Tn NFS
-filesystem may be mounted.
+file system may be mounted.
 .It Er 82 EIDRM Em "Identifier removed" .
 An IPC identifier was removed while the current process was waiting on it.
 .It Er 83 ENOMSG Em "No message of desired type" .
@@ -462,23 +463,31 @@ The scheduled operation was canceled.
 While decoding a multibyte character the function came along an
 invalid or an incomplete sequence of bytes or the given wide
 character is invalid.
+.It Er 87 ENOATTR Em "Attribute not found" .
+The specified extended attribute does not exist.
+.It Er 88 EDOOFUS Em "Programming error" .
+A function or API is being abused in a way which could only be detected
+at run-time.
 .El
 .Sh DEFINITIONS
 .Bl -tag -width Ds
-.It  Process ID .
+.It Process ID .
 Each active process in the system is uniquely identified by a non-negative
-integer called a process ID.  The range of this ID is from 0 to 99999.
-.It  Parent process ID
-A new process is created by a currently active process; (see
+integer called a process ID.
+The range of this ID is from 0 to 99999.
+.It Parent process ID
+A new process is created by a currently active process (see
 .Xr fork 2 ) .
 The parent process ID of a process is initially the process ID of its creator.
 If the creating process exits,
 the parent process ID of each child is set to the ID of a system process,
 .Xr init 8 .
-.It  Process Group
+.It Process Group
 Each active process is a member of a process group that is identified by
-a non-negative integer called the process group ID.  This is the process
-ID of the group leader.  This grouping permits the signaling of related
+a non-negative integer called the process group ID.
+This is the process
+ID of the group leader.
+This grouping permits the signaling of related
 processes (see
 .Xr termios 4 )
 and the job control mechanisms of
@@ -500,7 +509,7 @@ A session leader with a controlling terminal is a controlling process.
 .It Controlling terminal
 A terminal that is associated with a session is known as the controlling
 terminal for that session and its members.
-.It  "Terminal Process Group ID"
+.It "Terminal Process Group ID"
 A terminal may be acquired by a session leader as its controlling terminal.
 Once a terminal is associated with a session, any of the process groups
 within the session may be placed into the foreground by setting
@@ -511,7 +520,7 @@ to arbitrate between multiple jobs contending for the same terminal;
 .Xr csh 1
 and
 .Xr tty 4 ) .
-.It  "Orphaned Process Group"
+.It "Orphaned Process Group"
 A process group is considered to be
 .Em orphaned
 if it is not under the control of a job control shell.
@@ -532,7 +541,8 @@ termed the real user ID.
 .Pp
 Each user is also a member of one or more groups.
 One of these groups is distinguished from others and
-used in implementing accounting facilities.  The positive
+used in implementing accounting facilities.
+The positive
 integer corresponding to this distinguished group is termed
 the real group ID.
 .Pp
@@ -549,7 +559,8 @@ group IDs, and it is unspecified whether the effective group ID is
 a member of the list.)
 .Pp
 The effective user ID and effective group ID are initially the
-process's real user ID and real group ID respectively.  Either
+process's real user ID and real group ID respectively.
+Either
 may be modified through execution of a set-user-ID or set-group-ID
 file (possibly by one its ancestors) (see
 .Xr execve 2 ) .
@@ -558,9 +569,10 @@ list) is duplicated, so that the execution of a set-group-ID program
 does not result in the loss of the original (real) group ID.
 .Pp
 The group access list is a set of group IDs
-used only in determining resource accessibility.  Access checks
+used only in determining resource accessibility.
+Access checks
 are performed as described below in ``File Access Permissions''.
-.It  "Saved Set User ID and Saved Set Group ID"
+.It "Saved Set User ID and Saved Set Group ID"
 When a process executes a new file, the effective user ID is set
 to the owner of the file if the file is set-user-ID, and the effective
 group ID (first element of the group access list) is set to the group
@@ -573,18 +585,11 @@ or group ID after reverting to the real ID (see
 (In POSIX.1, the saved set-user-ID and saved set-group-ID are optional,
 and are used in setuid and setgid, but this does not work as desired
 for the super-user.)
-.It  Super-user
+.It Super-user
 A process is recognized as a
 .Em super-user
 process and is granted special privileges if its effective user ID is 0.
-.It  Special Processes
-The processes with process IDs of 0, 1, and 2 are special.
-Process 0 is the scheduler.  Process 1 is the initialization process
-.Xr init 8 ,
-and is the ancestor of every other process in the system.
-It is used to control the process structure.
-Process 2 is the paging daemon.
-.It  Descriptor
+.It Descriptor
 An integer assigned by the system when a file is referenced
 by
 .Xr open 2
@@ -597,20 +602,21 @@ or
 .Xr socketpair 2 ,
 which uniquely identifies an access path to that file or socket from
 a given process or any of its children.
-.It  File Name
-Names consisting of up to 255
-.Pq Dv MAXNAMELEN
+.It File Name
+Names consisting of up to
+.Brq Dv NAME_MAX
 characters may be used to name
 an ordinary file, special file, or directory.
 .Pp
-These characters may be selected from the set of all
-.Tn ASCII
-character
-excluding 0 (NUL) and the
-.Tn ASCII
-code for
+These characters may be arbitrary eight-bit values,
+excluding
+.Dv NUL
+.Tn ( ASCII
+0) and the
 .Ql \&/
-(slash).
+character (slash,
+.Tn ASCII
+47).
 .Pp
 Note that it is generally unwise to use
 .Ql \&* ,
@@ -621,28 +627,31 @@ or
 as part of
 file names because of the special meaning attached to these characters
 by the shell.
-.It  Path Name
+.It Path Name
 A path name is a
-.Tn NUL Ns -terminated
+.Dv NUL Ns -terminated
 character string starting with an
 optional slash
 .Ql \&/ ,
 followed by zero or more directory names separated
 by slashes, optionally followed by a file name.
-The total length of a path name must be less than 1024
-.Pq Dv MAXPATHLEN
+The total length of a path name must be less than
+.Brq Dv PATH_MAX
 characters.
+(On some systems, this limit may be infinite.)
 .Pp
 If a path name begins with a slash, the path search begins at the
 .Em root
 directory.
 Otherwise, the search begins from the current working directory.
-A slash by itself names the root directory.  An empty
+A slash by itself names the root directory.
+An empty
 pathname refers to the current directory.
-.It  Directory
+.It Directory
 A directory is a special type of file that contains entries
 that are references to other files.
-Directory entries are called links.  By convention, a directory
+Directory entries are called links.
+By convention, a directory
 contains at least two links,
 .Ql .\&
 and
@@ -651,32 +660,38 @@ referred to as
 .Em dot
 and
 .Em dot-dot
-respectively.  Dot refers to the directory itself and
+respectively.
+Dot refers to the directory itself and
 dot-dot refers to its parent directory.
 .It "Root Directory and Current Working Directory"
 Each process has associated with it a concept of a root directory
 and a current working directory for the purpose of resolving path
-name searches.  A process's root directory need not be the root
+name searches.
+A process's root directory need not be the root
 directory of the root file system.
-.It  File Access Permissions
+.It File Access Permissions
 Every file in the file system has a set of access permissions.
 These permissions are used in determining whether a process
 may perform a requested operation on the file (such as opening
-a file for writing).  Access permissions are established at the
-time a file is created.  They may be changed at some later time
+a file for writing).
+Access permissions are established at the
+time a file is created.
+They may be changed at some later time
 through the
 .Xr chmod 2
 call.
 .Pp
 File access is broken down according to whether a file may be: read,
-written, or executed.  Directory files use the execute
+written, or executed.
+Directory files use the execute
 permission to control if the directory may be searched.
 .Pp
 File access permissions are interpreted by the system as
 they apply to three different classes of users: the owner
 of the file, those users in the file's group, anyone else.
 Every file has an independent set of access permissions for
-each of these classes.  When an access check is made, the system
+each of these classes.
+When an access check is made, the system
 decides if permission should be granted by checking the access
 information applicable to the caller.
 .Pp
@@ -703,7 +718,7 @@ match the corresponding user ID and group ID of the file,
 but the permissions for ``other users'' allow access.
 .Pp
 Otherwise, permission is denied.
-.It  Sockets and Address Families
+.It Sockets and Address Families
 A socket is an endpoint for communication between processes.
 Each socket has queues for sending and receiving data.
 .Pp
@@ -719,9 +734,10 @@ for more information about the types available and
 their properties.
 .Pp
 Each instance of the system supports some number of sets of
-communications protocols.  Each protocol set supports addresses
-of a certain format.  An Address Family is the set of addresses
-for a specific group of protocols.  Each socket has an address
+communications protocols.
+Each protocol set supports addresses of a certain format.
+An Address Family is the set of addresses for a specific group of protocols.
+Each socket has an address
 chosen from the address family in which the socket was created.
 .El
 .Sh SEE ALSO
index ed27d87..6ae50bd 100644 (file)
@@ -1,4 +1,4 @@
-/*
+/*-
  * Copyright (c) 1982, 1986, 1989, 1993
  *     The Regents of the University of California.  All rights reserved.
  * (c) UNIX System Laboratories, Inc.
  * 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. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. 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.
@@ -36,7 +32,7 @@
  * SUCH DAMAGE.
  *
  *     @(#)errno.h     8.5 (Berkeley) 1/21/94
- * $FreeBSD: src/sys/sys/errno.h,v 1.14.2.2 2002/01/22 10:46:56 keramida Exp $
+ * $FreeBSD: src/sys/sys/errno.h,v 1.28 2005/04/02 12:33:28 das Exp $
  * $DragonFly: src/sys/sys/errno.h,v 1.10 2006/12/05 23:14:55 dillon Exp $
  */
 
@@ -89,7 +85,7 @@ static __inline int *__error(void)
 #define        EFBIG           27              /* File too large */
 #define        ENOSPC          28              /* No space left on device */
 #define        ESPIPE          29              /* Illegal seek */
-#define        EROFS           30              /* Read-only file system */
+#define        EROFS           30              /* Read-only filesystem */
 #define        EMLINK          31              /* Too many links */
 #define        EPIPE           32              /* Broken pipe */
 
@@ -172,21 +168,26 @@ static __inline int *__error(void)
 #define        EOVERFLOW       84              /* Value too large to be stored in data type */
 #define        ECANCELED       85              /* Operation canceled */
 #define        EILSEQ          86              /* Illegal byte sequence */
-#define ENOATTR                87              /* (from FreeBSD-5.x) */
-#define EDOOFUS                88              /* (from FreeBSD-5.x) */
-#define EUNUSED89      89
-#define EUNUSED90      90
-#define EUNUSED91      91
-#define EUNUSED92      92
-#define EUNUSED93      93
-#define EUNUSED94      94
-#define EUNUSED95      95
-#define EUNUSED96      96
-#define EUNUSED97      97
-#define EUNUSED98      98
-#define EASYNC         99
-#define        ELAST           99              /* Must be equal largest errno */
+#define        ENOATTR         87              /* Attribute not found */
+#define        EDOOFUS         88              /* Programming error */
+#endif /* _POSIX_SOURCE */
 
+#define        EBADMSG         89              /* Bad message */
+#define        EMULTIHOP       90              /* Multihop attempted */
+#define        ENOLINK         91              /* Link has been severed */
+#define        EPROTO          92              /* Protocol error */
+
+#ifndef _POSIX_SOURCE
+#define        EUNUSED93       93
+#define        EUNUSED94       94
+#define        EUNUSED95       95
+#define        EUNUSED96       96
+#define        EUNUSED97       97
+#define        EUNUSED98       98
+
+#define        EASYNC          99              /* XXX */
+
+#define        ELAST           99              /* Must be equal largest errno */
 #endif /* _POSIX_SOURCE */
 
 #if defined(_KERNEL) || defined(_KERNEL_STRUCTURES)