home *** CD-ROM | disk | FTP | other *** search
- .th INTRO II 11/5/73
- .de pg
- .sp
- ..
- .de en
- .pg
- .in 3
- .ti 0
- \\$1\t\\$2\t\\$3
- .br
- ..
- .sp 2
- .in 0
- .if t .ta 3 10
- .ce
- INTRODUCTION TO SYSTEM CALLS
- .sp
- 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
- .it bes
- and
- .it bec
- (``branch on error set (or clear)'').
- These are synonyms for
- the
- .it bcs
- and
- .it bcc
- instructions.
- .pg
- From C, an error condition is indicated by an otherwise
- impossible returned value.
- Almost always this is \(mi1;
- the individual sections specify the details.
- .pg
- 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
- .it errno
- is set to the error number.
- .it Errno
- is not cleared on successful calls, so it should be tested only
- after an error has occurred.
- There is a table of messages
- associated with each error, and a routine for printing the
- message.
- See
- .it "perror (III)."
- .pg
- 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 system (for the benefit of
- system-readers),
- and the messages available using
- .it perror.
- A short explanation is also provided.
- .en 0 \(mi (unused)
- .en 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.
- .en 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.
- .en 3 ESRCH "No such process"
- The process whose number was given to
- .it signal
- does not exist, or is already dead.
- .en 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.
- .en 5 EIO "I/O error"
- Some physical I/O error occurred during a
- .it read
- or
- .it write.
- This error may in some cases occur
- on a call following the one to which it actually applies.
- .en 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.
- .en 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
- .it exec.
- .en 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.
- .en 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).
- .en 10 ECHILD "No children"
- .it Wait
- and the process has no
- living or unwaited-for children.
- .en 11 EAGAIN "No more processes"
- In a
- .it fork,
- the system's process table is full and no
- more processes can for the moment be created.
- .en 12 ENOMEM "Not enough core"
- During an
- .it exec
- or
- .it 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 segments is such as to
- require more than the existing 8 segmentation registers.
- .en 13 EACCES "Permission denied"
- An attempt was made to access a file in a way forbidden
- by the protection system.
- .en 14 \(mi (unused)
- .en 15 ENOTBLK "Block device required"
- A plain file was mentioned where a block device was required,
- e.g. in
- .it mount.
- .en 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.
- .en 17 EEXIST "File exists"
- An existing file was mentioned in an inappropriate context,
- e.g.
- .it link.
- .en 18 EXDEV "Cross-device link"
- A link to a file on another device
- was attempted.
- .en 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.
- .en 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
- .it chdir.
- .en 21 EISDIR "Is a directory"
- An attempt to write on a directory.
- .en 22 EINVAL "Invalid argument"
- Some invalid argument:
- currently, dismounting a non-mounted
- device,
- mentioning an unknown signal in
- .it signal,
- and giving an unknown request in
- .it stty
- to the TIU special file.
- .en 23 ENFILE "File table overflow"
- The system's table of open files is full,
- and temporarily no more
- .it opens
- can be accepted.
- .en 24 EMFILE "Too many open files"
- Only 15 files can be open per process.
- .en 25 ENOTTY "Not a typewriter"
- The file mentioned in
- .it stty
- or
- .it gtty
- is not a typewriter or one of the other
- devices to which these calls apply.
- .en 26 ETXTBSY "Text file busy"
- An attempt to execute a pure-procedure
- program which is currently open for writing
- (or reading!).
- Also an attempt to open for writing a pure-procedure
- program that is being executed.
- .en 27 EFBIG "File too large"
- An attempt to make a file larger than the maximum of 32768 blocks.
- .en 28 ENOSPC "No space left on device"
- During a
- .it write
- to an ordinary file,
- there is no free space left on the device.
- .en 29 ESPIPE "Seek on pipe"
- A
- .it seek
- was issued to a pipe.
- This error should also be issued for
- other non-seekable devices.
- .en 30 EROFS "Read-only file system"
- An attempt to modify a file or directory
- was made
- on a device mounted read-only.
- .en 31 EMLINK "Too many links"
- An attempt to make more than 127 links to a file.
- .en 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.
-