Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ intro(2) — bsd — mips UMIPS RISC/os 4.52

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(3)

perror(3)



INTRO(2-BSD)        RISC/os Reference Manual         INTRO(2-BSD)



NAME
     intro - introduction to system calls and error numbers

SYNOPSIS
     #include <sys/errno.h>

NOTE
     Functions that are available for both -systype sysv and
     -systype bsd43 are included in both volumes of this manual
     without the designation (-SYSV) or (-BSD) following the sec-
     tion number.

DESCRIPTION
     This section describes all of the system calls.  Most of
     these calls have one or more error returns.  An error condi-
     tion is indicated by an otherwise impossible return value.
     This is almost always -1; the individual descriptions
     specify the details.  Note that a number of system calls
     overload the meanings of these error numbers, and that the
     meanings must be interpreted according to the type and cir-
     cumstances of the call.

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

     The following is a complete list of the errors and their
     names as given in <sys/errno.h>.

     0       Error 0
          Unused.

     1  EPERM  Not owner
          Typically this error indicates an attempt to modify a
          file in some way forbidden except to its owner or
          super-user.  It is also returned for attempts by ordi-
          nary users to do things allowed only to the super-user.

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

     3  ESRCH  No such process
          The process or process group whose number was given
          does not exist, or any such process is already dead.

     4  EINTR  Interrupted system call
          An asynchronous signal (such as interrupt or quit) that
          the user has elected to catch occurred during a system



                         Printed 1/15/91                   Page 1





INTRO(2-BSD)        RISC/os Reference Manual         INTRO(2-BSD)



          call.  If execution is resumed after processing the
          signal and the system call is not restarted, it will
          appear as if the interrupted system call returned this
          error condition.

     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 that does
          not exist, or beyond the limits of the device.  It may
          also occur when, for example, an illegal tape drive
          unit number is selected or a disk pack is not loaded on
          a drive.

     7  E2BIG  Arg list too long
          An argument list longer than 20480 bytes (or the
          current limit, NCARGS in <sys/param.h>) is presented to
          execve.

     8  ENOEXEC  Exec format error
          A request is made to execute a file that, although it
          has the appropriate permissions, does not start with a
          valid magic number (see a.out(4)).

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

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

     11  EAGAIN  No more processes
          In a fork, the system's process table is full or the
          user is not allowed to create any more processes.

     12  ENOMEM  Not enough memory
          During an execve or break, a program asks for more core
          or swap space than the system is able to supply, or a
          process size limit would be exceeded.  A lack of swap
          space is normally a temporary condition; however, a
          lack of core is not a temporary condition; the maximum
          size of the text, data, and stack segments is a system
          parameter.  Soft limits may be increased to their
          corresponding hard limits.

     13  EACCES  Permission denied
          An attempt was made to access a file in a way forbidden



 Page 2                  Printed 1/15/91





INTRO(2-BSD)        RISC/os Reference Manual         INTRO(2-BSD)



          by the protection system.

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

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

     16  EBUSY  Device busy
          An attempt to mount a device that was already mounted
          or an attempt was made to dismount a device on which
          there is an active file (open file, current directory,
          mounted-on file, or active text segment).  A request
          was made to an exclusive access device that was already
          in use.

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

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

     19  ENODEV  No such device
          An attempt was made to apply an inappropriate system
          call to a device, e.g., to read a write-only device, or
          the device is not configured by the system.

     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.

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

     22  EINVAL  Invalid argument
          Some invalid argument:  dismounting a non-mounted dev-
          ice, mentioning an unknown signal in signal, or some
          other argument inappropriate for the call.  Also set by
          math functions (see math(3M)).

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

     24  EMFILE  Too many open files
          As released, the limit on the number of open files per
          process is 64.  getdtablesize(2) will obtain the
          current limit.  Customary configuration limit on most



                         Printed 1/15/91                   Page 3





INTRO(2-BSD)        RISC/os Reference Manual         INTRO(2-BSD)



          other UNIX systems is 20 per process.

     25  ENOTTY  Inappropriate ioctl for device
          The file mentioned in an ioctl is not a terminal or one
          of the devices to which this call applies.

     26  ETXTBSY  Text file busy
          An attempt to execute a pure-procedure program that is
          currently open for writing.  Also an attempt to open
          for writing a pure-procedure program that is being exe-
          cuted.

     27  EFBIG  File too large
          The size of a file exceeded the maximum (about 2.1E9
          bytes).

     28  ENOSPC  No space left on device
          A write to an ordinary file, the creation of a direc-
          tory 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 more inodes are
          available on the file system.

     29  ESPIPE  Illegal seek
          An lseek was issued to a socket or 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 to make more than 32767 hard links to a
          file.

     32  EPIPE  Broken pipe
          A write on a pipe or socket for which there is no pro-
          cess to read the data.  This condition normally gen-
          erates a signal; the error is returned if the signal is
          caught or ignored.

     33  EDOM  Argument too large
          The argument of a function in the math package (3M) is
          out of the domain of the function.

     34  ERANGE  Result too large
          The value of a function in the math package (3M) is
          unrepresentable within machine precision.

     35  EWOULDBLOCK  Operation would block
          An operation that would cause a process to block was



 Page 4                  Printed 1/15/91





INTRO(2-BSD)        RISC/os Reference Manual         INTRO(2-BSD)



          attempted on an object in non-blocking mode (see
          fcntl(2)).

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

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

     38  ENOTSOCK  Socket operation on non-socket

     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 or some other network limit.

     41  EPROTOTYPE  Protocol wrong type for socket
          A protocol was specified that 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  Option not supported by protocol
          A bad option or level was specified in a setsockopt or
          getsockopt(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



                         Printed 1/15/91                   Page 5





INTRO(2-BSD)        RISC/os Reference Manual         INTRO(2-BSD)



          be able to use NS addresses with ARPA Internet proto-
          cols.

     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.

     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 net-
          work.

     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 peer
          A connection was forcibly closed by a peer.  This nor-
          mally results from a loss of the connection on the
          remote socket due to a timeout or a reboot.

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

     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 when already connected.

     57  ENOTCONN  Socket is not connected
          An request to send or receive data was disallowed
          because the socket is not connected and (when sending
          on a  datagram socket) no address was supplied.

     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 shut-
          down(2) call.

     59  unused





 Page 6                  Printed 1/15/91





INTRO(2-BSD)        RISC/os Reference Manual         INTRO(2-BSD)



     60  ETIMEDOUT  Connection timed out
          A connect or send 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 that is inactive on the foreign
          host.

     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 255 (MAXNAMELEN)
          characters, or an entire path name exceeded 1023
          (MAXPATHLEN-1) characters.

     64  EHOSTDOWN  Host is down
          A socket operation failed because the destination host
          was down.

     65  EHOSTUNREACH  Host is unreachable
          A socket operation was attempted to an unreachable
          host.

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

     69  EDQUOT  Disc quota exceeded
          A write to an ordinary file, the creation of a direc-
          tory or symbolic link, or the creation of a directory
          entry failed because the user's quota of disk blocks
          was exhausted, or the allocation of an inode for a
          newly created file failed because the user's quota of
          inodes was exhausted.

     70  ESTALE  Stale NFS file handle
          A client referenced an open file, but the file has been
          deleted.

     71  EREMOTE  Too many levels of remote in path
          An attempt was made to remotely mount a file system
          into a path which already has a remotely mounted com-
          ponent.

     72  ENOSTR  Not a stream device





                         Printed 1/15/91                   Page 7





INTRO(2-BSD)        RISC/os Reference Manual         INTRO(2-BSD)



     73  ETIME  Timer expired

     74  ENOSR  Out of stream resources

     75  ENOMSG  No message of desired type

     76  EBADMSG  Not a data message

     77  EIDRM  Identifier removed

     78  EDEADLK  Deadlock situation detected/avoided

     79  ENOLCK  No record locks available

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 30000.

   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(1).

   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(1) and tty(4)).

   Real User ID and Real Group ID
     Each user on the system is identified by a positive integer
     termed the 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 imple-
     menting accounting facilities.  The positive integer
     corresponding to this distinguished group is termed the real
     group ID.

     All processes have a real user ID and real group ID.  These
     are initialized from the equivalent attributes of the pro-
     cess that created it.




 Page 8                  Printed 1/15/91





INTRO(2-BSD)        RISC/os Reference Manual         INTRO(2-BSD)



   Effective User Id, Effective Group Id, and Access Groups
     Access to system resources is governed by three values:  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 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 below in ``File Access
     Permissions''.

   Super-user
     A process is recognized as a super-user process and is
     granted special privileges if its effective user ID is 0.

   Special Processes
     The processes with process ID's 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 is used to control the process structure.
     Process 2 is the paging daemon.

   Descriptor
     An integer assigned by the system when a file is referenced
     by open(2) or dup(2), or when a socket is created by
     pipe(2), socket(2) or socketpair(2), which uniquely identi-
     fies an access path to that file or socket from a given pro-
     cess or any of its children.

   File Name
     Names consisting of up to 255 (MAXNAMELEN) characters may be
     used to name an ordinary file, special file, or directory.

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

     Note that it is generally unwise to use *, ?, [ or ] as part
     of file names because of the special meaning attached to
     these characters by the shell.

   Path Name
     A path name is a null-terminated character string starting
     with an optional slash (/), followed by zero or more direc-
     tory names separated by slashes, optionally followed by a
     file name.  The total length of a path name must be less
     than 1024 (MAXPATHLEN) characters.



                         Printed 1/15/91                   Page 9





INTRO(2-BSD)        RISC/os Reference Manual         INTRO(2-BSD)



     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 pathname refers to the current
     directory.

   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 contains at least
     two links, . and .., referred to as dot and dot-dot respec-
     tively.  Dot refers to the directory itself and dot-dot
     refers to its parent directory.

   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 directory of the root file system.

   File Access Permissions
     Every file in the file system has a set of access permis-
     sions.  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 control if 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, 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 caller.

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

          The process's effective user ID is that of the super-
          user.

          The process's effective user ID matches the user ID of
          the owner of the file and the owner permissions allow
          the access.





 Page 10                 Printed 1/15/91





INTRO(2-BSD)        RISC/os Reference Manual         INTRO(2-BSD)



          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 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
          permissions for ``other users'' allow access.

     Otherwise, permission is denied.

   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 proper-
     ties.  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(3), perror(3).


















                         Printed 1/15/91                  Page 11



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