man(1) Manual page archive


                  INTRODUCTION TO SYSTEM CALLS

Section II of this manual lists all the entries into the system.
In most cases two calling sequences are specified, one of which
is usable from assembly language, and the other from C.  Most of
these calls have an error return.  From assembly language an
erroneous call is always indicated by turning on the c-bit of the
condition codes.  The presence of an error is most easily tested
by the instructions bes and bec (``branch on error set (or
clear)'').  These are synonyms for the bcs and bcc instructions.

From C, an error condition is indicated by an otherwise impossi-
ble returned value.  Almost always this is -1; the individual
sections specify the details.

In both cases an error number is also available.  In assembly
language, this number is returned in r0 on erroneous calls.  From
C, the external variable errno is set to the error number.  Errno
is not cleared on successful calls, so it should be tested only
after an error has occurred.  There is a table of messages asso-
ciated with each error, and a routine for printing the message.
See perror (III).

The possible error numbers are not recited with each writeup in
section II, since many errors are possible for most of the calls.
Here is a list of the error numbers, their names inside the sys-
tem (for the benefit of system-readers), and the messages avail-
able using perror.  A short explanation is also provided.

0       -       (unused)

1       EPERM   Not owner and not super-user
   Typically this error indicates an attempt to modify a file in
   some way forbidden except to its owner.  It is also returned
   for attempts by ordinary 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 whose number was given to signal does not exist,
   or is already dead.

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 will
   appear as if the interrupted system call returned this error
   condition.

 1

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 beyond the limits of the device.  It may also occur
   when, for example, a tape drive is not dialled in or no disk
   pack is loaded on a drive.

7       E2BIG   Arg list too long
   An argument list longer than 512 bytes (counting the null at
   the end of each argument) is presented to exec.

8       ENOEXEC Exec format error
   A request is made to execute a file which, although it has the
   appropriate permissions, does not start with one of the magic
   numbers 407 or 410.

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 which 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 and no more pro-
   cesses can for the moment be created.

12      ENOMEM  Not enough core
   During an exec or break, a program asks for more core than the
   system is able to supply.  This is not a temporary condition;
   the maximum core size is a system parameter.  The error may
   also occur if the arrangement of text, data, and stack seg-
   ments is such as to require more than the existing 8 segmenta-
   tion registers.

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

14      -       (unused)

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

16      EBUSY   Mount 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
   open file or some process's current directory.

 2

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

18      EXDEV   Cross-device link
   A 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. 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.

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

22      EINVAL  Invalid argument
   Some invalid argument: currently, dismounting a non-mounted
   device, mentioning an unknown signal in signal, and giving an
   unknown request in stty to the TIU special file.

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
   Only 15 files can be open per process.

25      ENOTTY  Not a typewriter
   The file mentioned in stty or gtty is not a typewriter or one
   of the other devices to which these calls apply.

26      ETXTBSY Text file busy
   An attempt to execute a pure-procedure program which is cur-
   rently open for writing (or reading!).  Also an attempt to
   open for writing a pure-procedure program that is being exe-
   cuted.

27      EFBIG   File too large
   An attempt to make a file larger than the maximum of 32768
   blocks.

28      ENOSPC  No space left on device
   During a write to an ordinary file, there is no free space
   left on the device.

29      ESPIPE  Seek on pipe
   A seek was issued to a pipe.  This error should 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

 3

   mounted read-only.

31      EMLINK  Too many links
   An attempt to make more than 127 links to a file.

32      EPIPE   Write on broken pipe
   A write on a pipe 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.

 4