Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(3m)

perror(3c)



INTRO(2)                COMMAND REFERENCE                INTRO(2)



NAME
     intro - introduction to system calls and error numbers

SYNOPSIS
     #include <errno.h>

DESCRIPTION
     This section describes all system calls.  Most of these
     calls have one or more error returns.  An error condition is
     indicated by an otherwise impossible return value; this is
     almost always -1; the individual descriptions specify the
     details.

     As with normal arguments, all return codes and values from
     functions are of type int unless otherwise noted.  An error
     number is also made available in the external variable
     errno; errno is not cleared on successful calls, so it
     should be tested only after an error has been indicated.

     The following is a complete list of the errors and their
     names as given in <errno.h>.  Only these symbolic names for
     error numbers should be used in programs, since the actual
     value of the error number may vary with the implementation.
     Certain implementations may contain extensions which prevent
     some errors from ever occurring.

     0       Unused

     1  EPERM  Not file owner or superuser
          Typically this error indicates an attempt to modify a
          file in some way forbidden by the file protection
          codes; the error is also returned for attempts by
          ordinary users to do things allowed only to the
          superuser.

     2  ENOENT  No such file or directory
          This error occurs when a file name is specified and the
          file should exist but doesn't, when the specified file
          is a symbolic link to a file or directory that does not
          exist, or when one of the directories in a path name
          does not exist.

     3  ESRCH  No such process
          No such process can be found corresponding to that
          specified by the process ID.

     4  EINTR  Interrupted system call
          An asynchronous signal (such as interrupt or quit),
          which the user has elected to catch, occurred during a
          system call.  If execution is resumed after processing
          the signal, it appears as if the interrupted system
          call returned this error condition.



Printed 4/6/89                                                  1





INTRO(2)                COMMAND REFERENCE                INTRO(2)



     5  EIO  I/O error
          Some physical I/O error occurred during a read or
          write; this error may in some cases occur on a call
          following the one to which it actually applies.

     6  ENXIO  No such device or address
          I/O on a special file refers to a subdevice which does
          not exist, or the file is beyond the limits of the
          device.  The error may also occur when, for example, a
          tape drive is not online, or a disk pack is not loaded
          on a drive.

     7  E2BIG  Argument list too long
          An argument list longer than NCARGS (defined in
          <sys/param.h>) bytes is presented to a member of the
          exec family.

     8  ENOEXEC  Exec format error
          A request is made to execute a file which, although it
          has the appropriate permissions, is not in the proper
          format for an executable object program.  See a.out(5).

     9  EBADF  Bad file number
          Either a file descriptor refers to no open file, or a
          read (respectively write) request is made to a file
          which is open only for writing (respectively reading).

     10  ECHILD  No children from process
          Wait and the process has no living or unwaited-for
          children.

     11  EAGAIN  No more processes
          A fork failed because the system's process table is
          full or the user is not allowed to create any more
          processes.  This may be a temporary condition and
          subsequent calls to the same routine may complete
          normally.

     12  ENOMEM  Not enough core or swap space
          During an execve or brk or sbrk, a program asks for
          more core or swap space than the system is able to
          supply.  A lack of swap space is normally a temporary
          condition.  However, a lack of core is not a temporary
          condition; the maximum core size is a system parameter.

     13  EACCES  Permission denied
          An attempt was made to access a file in a way forbidden
          by the protection system.

     14  EFAULT  Bad address
          The system encountered a hardware fault in attempting
          to access an argument of a system call.



Printed 4/6/89                                                  2





INTRO(2)                COMMAND REFERENCE                INTRO(2)



     15  ENOTBLK  Block device required
          A non-block file was mentioned where a block device was
          required, e.g. in mount.

     16  EBUSY  Mount device busy
          An attempt was made to access a device that was already
          in use, such as mounting a device that is already
          mounted.  This error is also returned if an attempt is
          made to dismount a device on which there is an active
          file directory (open file, current directory, mounted-
          on file, active text segment).

     17  EEXIST  File exists
          An existing file was mentioned in an inappropriate
          context, e.g.  link.

     18  EXDEV  Cross-device link
          A hard link to a file on another device was attempted.

     19  ENODEV  No such device driver or operation
          An attempt was made to apply an inappropriate system
          call to a device; e.g. read a write-only device.

     20  ENOTDIR  Not a directory
          A non-directory was specified where a directory is
          required, for example in a path name or as an argument
          to chdir(2).

     21  EISDIR  Is a directory
          An attempt was made to write on a directory.

     22  EINVAL  Invalid argument
          Some invalid argument (e.g., mentioning an unknown
          signal in kill, reading or writing a file for which
          lseek has generated a negative pointer) has been used.
          Also set by math functions; see intro(3m).

     23  ENFILE  File table overflow
          The system's table of open files is full, and
          temporarily no more opens can be accepted.

     24  EMFILE  Too many open files
          No process may have more than NOFILE (defined in
          <sys/max.h>) file descriptors open at a time.

     25  ENOTTY  Request does not apply
          A given request is not recognized by or does not apply
          to a specified file or device.

     26  ETXTBSY  Text file busy
          An attempt was made to open(2) for writing a shared-
          text file that is being executed.



Printed 4/6/89                                                  3





INTRO(2)                COMMAND REFERENCE                INTRO(2)



     27  EFBIG  File too large
          The size of a file exceeded the maximum file size.

     28  ENOSPC  No space left on device
          During a write to an ordinary file, the creation of a
          directory or symbolic link, or the creation of a
          directory entry failed because no more disk blocks are
          available on the file system, or the allocation of an
          inode for a newly-created file failed because no inodes
          are available on the file system.

     29  ESPIPE  Illegal seek
          An lseek was issued to a pipe; this error may also be
          issued for other non-seekable devices.

     30  EROFS  Read-only file system
          An attempt to modify a file or directory was made on a
          device mounted read-only.

     31  EMLINK  Too many links
          An attempt was made to make more than the legal limit
          of hard links to a file.

     32  EPIPE  Unconnected pipe
          A write on a pipe or socket was attempted, for which
          there is no process to read the data.  This condition
          normally generates a signal; the error is returned if
          the signal is ignored.

     33  EDOM  Math argument out of range
          The argument of a function in the math package (see
          intro(3m)) is out of the domain of the function.

     34  ERANGE  Result too large
          The value of a function in the math package is not
          representable within machine precision.

     35  EWOULDBLOCK  Operation would block
          An operation which would cause a process to block was
          attempted on an object while in non-blocking mode (see
          ioctl(2)).

     36  EINPROGRESS  Operation now in progress
          An operation which takes a long time to complete (such
          as a connect(2)) was attempted on a non-blocking object
          (see ioctl(2)).

     37  EALREADY  Disconnection already in progress
          An operation was attempted on a non-blocking object
          which already had an operation in progress.





Printed 4/6/89                                                  4





INTRO(2)                COMMAND REFERENCE                INTRO(2)



     38  ENOTSOCK  Socket operation on non-socket
          Self-explanatory.

     39  EDESTADDRREQ  Destination address required
          A required address was omitted from an operation on a
          socket.

     40  EMSGSIZE  Message too long
          A message sent on a socket was larger than the internal
          message buffer.

     41  EPROTOTYPE  Protocol wrong type for socket
          A protocol was specified which does not support the
          semantics of the socket type requested. For example,
          you cannot use the ARPA Internet UDP protocol with type
          SOCK_STREAM.

     42  ENOPROTOOPT  Protocol not available
          A bad option was specified in a getsockopt(2) or
          setsockopt(2) call.

     43  EPROTONOSUPPORT  Protocol not supported
          The protocol has not been configured into the system or
          no implementation for it exists.

     44  ESOCKTNOSUPPORT  Socket type not supported
          The support for the socket type has not been configured
          into the system or no implementation for it exists.

     45  EOPNOTSUPP  Operation not supported on socket
          For example, trying to accept a connection on a
          datagram socket.

     46  EPFNOSUPPORT  Protocol family not supported
          The protocol family has not been configured into the
          system or no implementation for it exists.

     47  EAFNOSUPPORT  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 PUP Internet addresses with ARPA
          Internet protocols.

     48  EADDRINUSE  Address already in use
          Only one usage of each address is normally permitted.

     49  EADDRNOTAVAIL  Can't assign requested address
          Normally results from an attempt to create a socket
          with an address not on this machine.





Printed 4/6/89                                                  5





INTRO(2)                COMMAND REFERENCE                INTRO(2)



     50  ENETDOWN  Network is down
          A socket operation encountered a dead network.

     51  ENETUNREACH  Network is unreachable
          A socket operation was attempted to an unreachable
          network.

     52  ENETRESET  Network dropped connection on reset
          The host you were connected to crashed and rebooted.

     53  ECONNABORTED  Software caused connection abort
          A connection abort was caused internal to your host
          machine.

     54  ECONNRESET  Connection reset by remote host
          A connection was forcibly closed by a peer; this
          normally results from the peer executing a shutdown(2)
          call.

     55  ENOBUFS  No buffer space available
          An operation on a socket or pipe was not performed
          because the system lacked sufficient buffer space.

     56  EISCONN  Socket is already connected
          A connect request was made on an already connected
          socket; or, a sendto or sendmsg request on a connected
          socket specified a destination other than the connected
          party.

     57  ENOTCONN  Socket is not connected
          An request to send or receive data was disallowed
          because the socket is not connected.

     58  ESHUTDOWN  Can't send after socket shutdown
          A request to send data was disallowed because the
          socket had already been shut down with a previous
          shutdown(2) call.

     59  ETOOMANYREFS  Too many references; can't splice
          Unused.

     60  ETIMEDOUT  Connection timed out
          A connect request failed because the connected party
          did not properly respond after a period of time.  (The
          timeout period is dependent on the communication
          protocol.)

     61  ECONNREFUSED  Connection refused
          No connection could be made because the target machine
          actively refused it; this usually results from trying
          to connect to a service which is inactive on the
          foreign host.



Printed 4/6/89                                                  6





INTRO(2)                COMMAND REFERENCE                INTRO(2)



     62  ELOOP  Too many levels of symbolic links
          A path name lookup involved more than 8 symbolic links.

     63  ENAMETOOLONG  File name too long
          A component of a path name exceeded MAXNAMLEN
          characters, or an entire path name exceeded MAXPATHLEN
          characters; these are defined in <sys/max.h>.

     64  EHOSTDOWN  Host is down
          A requested host is not responding.

     65  EHOSTUNREACH  Host is unreachable
          A requested host is not reachable from the current
          node.

     66  ENOTEMPTY  Directory not empty
          A directory with entries other than "." and ".." was
          supplied to a remove directory or rename call.

     67  EPROCLIM  Too many processes
          Unused.

     68  EUSERS  Too many users
          Unused.

     69  EDQUOT  Disk quota exceeded
          Unused.

     70  ENOASCII  Name contains byte with high-order bit set
          A given path name contains a non-ASCII character, a
          byte with the high-order bit set.

     71  EMCOLLIDE  Map onto something already there
          New areas may only be added where there is currently no
          memory.  If you want to replace an area, unmap it
          first.

     72  EMRANGE  Designated area out of range
          Possible problems:  any part of the addressed area 1)
          crosses the P0:P1 boundary (on a VAX); 2) is in the u
          area; 3) is out of the user's address space.

     73  EDFS_CD  Too many chdir's to remote host(s)

     74  EDFSREF  Reference is to remote file

     75  EDFSBADRESP  Response length incorrect

     76  EDFSBADCMD  Bad command (invalid command; wrong length)

     77  EDFSNOSUCHHOST  Couldn't find addr of hostname




Printed 4/6/89                                                  7





INTRO(2)                COMMAND REFERENCE                INTRO(2)



     78  EDFSNOBUF  Malloc failed on remote system; try smaller
          ( <8K ) read or write

     79  EDFSBADVER  Unsupported version

     80  EDFSNODAEMON  DFS daemon is not running

     81  EDFSNOPROC  No process slots on remote system

DEFINITIONS
     Process ID
        Each active process in the system is uniquely identified
        by a positive integer called a process ID.  The range of
        this ID is from 0 to NPROC.

     Parent process ID
        A new process is created by a currently active process;
        see fork(2).  The parent process ID of a process is the
        process ID of its creator.

     Process Group ID
        Each active process is a member of a process group that
        is identified by a positive integer called the process
        group ID; this is the process ID of the group leader.
        This grouping permits the signaling of related processes
        (see killpg(2)) and the job control mechanisms of
        csh(1csh).

     Tty Group ID
        Each active process can be a member of a terminal group
        that is identified by a positive integer called the tty
        group ID; this grouping is used to arbitrate between
        multiple jobs contending for the same terminal; see
        csh(1csh), and tty(4).

     Real User ID and Real Group ID
        Each user allowed on the system is identified by a
        positive integer called a real user ID.

        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 integer
        corresponding to this distinguished group is termed the
        real group ID.

        An active process has a real user ID and real group ID
        that are set to the real user ID and real group ID,
        respectively, of the user responsible for the creation of
        the process.

     Effective User ID, Effective Group ID, and Access Groups
        Access to system resources is governed by three values:



Printed 4/6/89                                                  8





INTRO(2)                COMMAND REFERENCE                INTRO(2)



        the effective user ID, the effective group ID, and the
        group access list.

        The effective user ID and effective group ID are
        initially the 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 of
        its ancestors); see execve(2).

        The group access list is an additional set of group ID's
        used only in determining resource accessibility.  Access
        checks are performed as described in the section File
        Access Permissions.

     Superuser
        A process is recognized as a superuser process and is
        granted special privileges if its effective user ID is 0.

     Special Processes
        The processes with a process ID of 0, 1, and 2 are
        special.  Process 0 is the scheduler.  Process 1 is the
        initialization process init, and is the ancestor of every
        other process in the system; it controls the process
        structure.  Process 2 is the paging daemon.

     Descriptor
        An non-negative integer assigned by the system when a
        file is referenced by open(2), dup(2), fcntl(2), or
        pipe(2), or when a socket is referenced by socket(2) or
        socketpair(2).  The descriptor uniquely identifies an
        access path to that file or socket from a given process
        or any of its children.

     File Name
        Names consisting of up to MAXNAMLEN may be used to name
        an ordinary file, special file, or directory.

        These characters may be selected from the set of all
        ASCII characters excluding 0 (null) and the ASCII code
        for / (slash).  (The parity bit, bit 8, must be 0.)

        Note that it is generally preferable to use only letters,
        numbers, underscores, and periods within file names,
        since the use of non-printing and other special
        characters can be confusing or ambiguous in certain
        contexts.

     Path Name and Path Prefix
        A path name is a null-terminated character string
        starting with an optional slash (/), followed by zero or
        more directory names separated by slashes, optionally
        followed by a file name.  The total length of a path name



Printed 4/6/89                                                  9





INTRO(2)                COMMAND REFERENCE                INTRO(2)



        must be less than MAXPATHLEN characters.

        A path prefix is a path name without the final file name.

        If a path name begins with a slash, the path search
        begins at the root directory.  Otherwise, the search
        begins from the current working directory.  A slash by
        itself names the root directory.  A null path name refers
        to the current directory.

     Directory
        A directory is a special type of file which contains
        entries which are pointers to data files or other
        directories.  Directory entries are called links.  By
        convention, a directory contains at least two links, .
        and .., referred to as dot and dot-dot respectively.  Dot
        refers to the directory itself and dot-dot refers to its
        parent directory.  In the root directory, .. refers to
        the root directory itself.

     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' root
        directory need not be the root directory of the root file
        system.

     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 through
        the chmod(2) call.

        File access is broken down according to whether a file
        may be read, written, or executed.  Directory files use
        the execute permission to indicate whether the directory
        may be searched.

        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, and anyone
        else.  Every file has an independent set of access
        permissions for 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 class of use of the caller.

        Read, write, and execute/search permissions on a file are
        granted to a process if



Printed 4/6/89                                                 10





INTRO(2)                COMMAND REFERENCE                INTRO(2)



          -  the process's effective user ID is that of the
          superuser;
          -  the process's effective user ID matches the user ID
          of the owner of the file and the ``owner'' access
          permissions allow the access;
          -  the process's effective user ID does not match the
          user ID of the owner of the file, and either the
          process's effective group ID matches the group ID of
          the file, or the group ID of the file is in the
          process's group access list, and the ``group'' access
          permissions allow the access;
          -  neither the effective user ID nor effective group ID
          and group access list of the process match the
          corresponding user ID and group ID of the file, but the
          access permissions for ``other users'' allow access;
          -  otherwise, permission is denied.

     Character and Block Special Files

        Character and block special files are used to refer to
        physical devices.  Certain restrictions may apply to the
        use of character and block special files which are
        implementation-dependent.

     Sockets and Address Families

        A socket is an endpoint for communication between
        processes.  Each socket has queues for sending and
        receiving data.

        Sockets are typed according to their communications
        properties.  These properties include whether messages
        sent and received at a socket require the name of the
        partner, whether communication is reliable, the format
        used in naming message recipients, etc.

        Each instance of the system supports some collection of
        socket types; consult socket(2) for more information
        about the types available and their properties.

        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 chosen from the address family in
        which the socket was created.

SEE ALSO
     intro(3m) and perror(3c).






Printed 4/6/89                                                 11



%%index%%
na:264,106;
sy:370,284;
de:654,2224;3214,2327;5877,2166;8379,2127;10842,2029;13207,2117;15660,1747;17743,2213;20292,2454;23082,2483;25901,2189;
se:28090,143;
%%index%%000000000191

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026