INTRO(II)                    11/5/73                    INTRO(II)




                  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  er-
roneous  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 ap-
   pear as if the interrupted system  call  returned  this  error
   condition.

5    EIO  I/O error


                              - 1 -




INTRO(II)                    11/5/73                    INTRO(II)


   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 ex-
   ist, 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.

17   EEXIST    File exists
   An  existing  file  was mentioned in an inappropriate context,


                              - 2 -




INTRO(II)                    11/5/73                    INTRO(II)


   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
   mounted read-only.

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


                              - 3 -




INTRO(II)                    11/5/73                    INTRO(II)


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 -