460 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			460 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.\" Copyright (c) 1980,1983,1986 Regents of the University of California.
 | 
						|
.\" All rights reserved.  The Berkeley software License Agreement
 | 
						|
.\" specifies the terms and conditions for redistribution.
 | 
						|
.\"
 | 
						|
.\"	@(#)intro.2	6.7 (Berkeley) 5/23/86
 | 
						|
.\"
 | 
						|
.TH INTRO 2 "June 30, 1986"
 | 
						|
.UC 4
 | 
						|
.de en
 | 
						|
.HP
 | 
						|
\\$1  \\$2  \\$3
 | 
						|
.br
 | 
						|
..
 | 
						|
.SH NAME
 | 
						|
intro, errno \- introduction to system calls and error numbers
 | 
						|
.SH SYNOPSIS
 | 
						|
.B "#include <errno.h>"
 | 
						|
.SH DESCRIPTION
 | 
						|
This section describes all of the 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.
 | 
						|
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 circumstances of the call.
 | 
						|
.PP
 | 
						|
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 \fBerrno\fP, which is not cleared
 | 
						|
on successful calls.
 | 
						|
Thus \fBerrno\fP should be tested only after an error has occurred.
 | 
						|
.PP
 | 
						|
The following is a list of the errors and their
 | 
						|
names as given in
 | 
						|
.RI < sys/errno.h >:
 | 
						|
.en 0 OK "Error 0
 | 
						|
Unused.  (The symbol "OK" is only used inside the kernel source.)
 | 
						|
.en 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 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 or process group whose number was given
 | 
						|
does not exist, or any such process is already dead.
 | 
						|
.en 4 EINTR "Interrupted system call
 | 
						|
An asynchronous signal (such as interrupt or quit)
 | 
						|
that the user has elected to catch
 | 
						|
occurred during a system 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.
 | 
						|
.en 5 EIO "I/O error
 | 
						|
Some physical I/O error occurred during an I/O operation, usually
 | 
						|
.B read
 | 
						|
or
 | 
						|
.BR write .
 | 
						|
Operations on file descriptors that refer to devices that are forcefully
 | 
						|
taken away or in a bad state will also provoke this error.
 | 
						|
.en 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.
 | 
						|
.en 7 E2BIG "Arg list too long
 | 
						|
An argument list longer than ARG_MAX bytes is presented to
 | 
						|
.BR execve .
 | 
						|
ARG_MAX is set to 4096 bytes for 16-bit MINIX 3, 16384 bytes for 32-bit
 | 
						|
MINIX 3, and unlimited for Minix-vmd as these systems are released.
 | 
						|
.en 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
 | 
						|
.BR a.out (5)).
 | 
						|
.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 that is open only for writing (resp. reading).
 | 
						|
.en 10 ECHILD "No children
 | 
						|
.B Wait
 | 
						|
and the process has no
 | 
						|
living or unwaited-for children.
 | 
						|
.en 11 EAGAIN "Resource temporarily unavailable
 | 
						|
In a
 | 
						|
.B fork,
 | 
						|
the system's process table is full or the user is not allowed to create
 | 
						|
any more processes, otherwise an operation that would cause a process to
 | 
						|
block was attempted on an object in non-blocking mode (see \fBfcntl\fP(2)).
 | 
						|
.en 12 ENOMEM "Not enough core
 | 
						|
During an
 | 
						|
.B execve
 | 
						|
or
 | 
						|
.B brk,
 | 
						|
a program asks for more (virtual) memory than the system is
 | 
						|
able to supply,
 | 
						|
or a process size limit would be exceeded.
 | 
						|
The maximum size
 | 
						|
of the data+stack segment is set by the
 | 
						|
.BR chmem (1)
 | 
						|
program.  For Minix-vmd a small data+stack size is increased to 3 megabytes
 | 
						|
when a program is executed.
 | 
						|
.en 13 EACCES "Permission denied
 | 
						|
An attempt was made to access a file in a way forbidden
 | 
						|
by the protection system.  Also an attempt to open a device for writing
 | 
						|
that is physically write protected.
 | 
						|
.en 14 EFAULT "Bad address
 | 
						|
An argument of a system call is outside the address space allocated to a
 | 
						|
process.
 | 
						|
.en 15 ENOTBLK "Block device required
 | 
						|
A plain file was mentioned where a block device was required,
 | 
						|
e.g., in
 | 
						|
.BR mount .
 | 
						|
.en 16 EBUSY "Resource 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.
 | 
						|
.en 17 EEXIST "File exists
 | 
						|
An existing file was mentioned in an inappropriate context,
 | 
						|
e.g.,
 | 
						|
.BR link .
 | 
						|
.en 18 EXDEV "Cross-device link
 | 
						|
A hard link to a file on another device
 | 
						|
was attempted.
 | 
						|
.en 19 ENODEV "No such device
 | 
						|
An attempt was made to access a device that is not configured by the system,
 | 
						|
i.e., there is no driver for the 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
 | 
						|
.BR chdir .
 | 
						|
.en 21 EISDIR "Is a directory
 | 
						|
An attempt to write on a directory.
 | 
						|
.en 22 EINVAL "Invalid argument
 | 
						|
Some invalid argument:
 | 
						|
dismounting a non-mounted
 | 
						|
device,
 | 
						|
mentioning an unknown signal in
 | 
						|
.B signal,
 | 
						|
or some other argument inappropriate for the call.
 | 
						|
Also set by math functions, (see 
 | 
						|
.BR math (3)).
 | 
						|
.en 23 ENFILE "File table overflow
 | 
						|
The system's table of open files is full,
 | 
						|
and temporarily no more
 | 
						|
.I opens
 | 
						|
can be accepted.
 | 
						|
.en 24 EMFILE "Too many open files
 | 
						|
The limit on the number of open files per process, OPEN_MAX, is reached.
 | 
						|
As released, this limit is 20 for MINIX 3, and 30 for Minix-vmd.
 | 
						|
.en 25 ENOTTY "Not a typewriter
 | 
						|
The file mentioned in an
 | 
						|
.B ioctl
 | 
						|
is not a terminal or one of the
 | 
						|
devices to which this call applies.  (Often seen error from programs with
 | 
						|
bugs in their error reporting code.)
 | 
						|
.en 26 ETXTBSY "Text file busy
 | 
						|
Attempt to execute a program that is open for writing.  Obsolete under MINIX 3.
 | 
						|
.en 27 EFBIG "File too large
 | 
						|
The size of a file exceeded the maximum (little over 64 megabytes for
 | 
						|
the V2 file system).
 | 
						|
.en 28 ENOSPC "No space left on device
 | 
						|
A
 | 
						|
.B 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 more inodes are available
 | 
						|
on the file system.
 | 
						|
.en 29 ESPIPE "Illegal seek
 | 
						|
An
 | 
						|
.B lseek
 | 
						|
was issued to a pipe or TCP/IP channel.
 | 
						|
This error may 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 a certain number of hard links to a file.  The
 | 
						|
advertized maximum, LINK_MAX, is 127, but Minix-vmd uses a much larger
 | 
						|
maximum of 32767 for the V2 file system.
 | 
						|
.en 32 EPIPE "Broken pipe
 | 
						|
A write on a pipe or TCP/IP channel for which there is no process
 | 
						|
to read the data.
 | 
						|
This condition normally generates the signal SIGPIPE;
 | 
						|
the error is returned if the signal is caught or ignored.
 | 
						|
.en 33 EDOM "Math argument
 | 
						|
The argument of a function in the math package
 | 
						|
is out of the domain of the function.
 | 
						|
.en 34 ERANGE "Result too large
 | 
						|
The value of a function in the math package
 | 
						|
is unrepresentable within machine precision.
 | 
						|
.en 35 EDEADLK "Resource deadlock avoided
 | 
						|
A process attempts to place a blocking lock on a file that is already
 | 
						|
locked by another process and that process is waiting for the first
 | 
						|
process to unlock a file that first process already has a lock on.
 | 
						|
(The classic "lock A, lock B" by process 1, and "lock B, lock A" by
 | 
						|
process 2.)
 | 
						|
.en 36 ENAMETOOLONG "File name too long"
 | 
						|
The path name exceeds PATH_MAX characters.  PATH_MAX equals 255 as
 | 
						|
distributed.
 | 
						|
.en 37 ENOLCK "No locks available
 | 
						|
The system's table of active locks is full.
 | 
						|
.en 38 ENOSYS "Function not implemented
 | 
						|
The system call is not supported.  Either an old program uses an obsolete
 | 
						|
call, or a program for a more capable system is run on a less capable
 | 
						|
system.
 | 
						|
.en 39 ENOTEMPTY "Directory not empty"
 | 
						|
A directory with entries other than \*(lq.\*(rq and \*(lq..\*(rq
 | 
						|
was supplied to a remove directory or rename call.
 | 
						|
.en 40 ELOOP "Too many symbolic links"
 | 
						|
A path name lookup involved too many symbolic links.
 | 
						|
.en 41 ERESTART "Device driver restarted
 | 
						|
.en 43 EIDRM "Identifier removed
 | 
						|
.en 44 EILSEQ "Illegal byte sequence
 | 
						|
.en 50 EPACKSIZE "Invalid packet size
 | 
						|
.en 51 ENOBUFS "Not enough buffers left
 | 
						|
.en 52 EBADIOCTL "Illegal ioctl for device
 | 
						|
.en 53 EBADMODE "Bad mode in ioctl
 | 
						|
.en 54 EWOULDBLOCK "Would block
 | 
						|
.en 55 ENETUNREACH "Network unreachable
 | 
						|
.en 56 EHOSTUNREACH "Host unreachable
 | 
						|
.en 57 EISCONN "Already connected
 | 
						|
.en 58 EADDRINUSE "Address in use
 | 
						|
.en 59 ECONNREFUSED "Connection refused
 | 
						|
.en 60 ECONNRESET "Connection reset
 | 
						|
.en 61 ETIMEDOUT "Connection timed out
 | 
						|
.en 62 EURG "Urgent data present
 | 
						|
.en 63 ENOURG "No urgent data present
 | 
						|
.en 64 ENOTCONN "No connection
 | 
						|
.en 65 ESHUTDOWN "Already shutdown
 | 
						|
.en 66 ENOCONN "No such connection
 | 
						|
.en 67 EAFNOSUPPORT "Address family not supported
 | 
						|
.en 68 EPROTONOSUPPORT "Protocol not supported by AF
 | 
						|
.en 69 EPROTOTYPE "Protocol wrong type for socket
 | 
						|
.en 70 EINPROGRESS "Operation now in progress
 | 
						|
.en 71 EADDRNOTAVAIL "Can't assign requested address
 | 
						|
.en 72 EALREADY "Operation already in progress
 | 
						|
.en 73 EMSGSIZE "Message too long
 | 
						|
.en 74 ENOTSOCK "Socket operation on non-socket
 | 
						|
.en 75 ENOPROTOOPT "Protocol not available
 | 
						|
.en 76 EOPNOTSUPP "Operation not supported (has alias ENOTSUP)
 | 
						|
.en 77 ENETDOWN "Network is down
 | 
						|
.ig
 | 
						|
.en XXX EDQUOT "Disc quota exceeded"
 | 
						|
A 
 | 
						|
.B write
 | 
						|
to an ordinary file, the creation of a
 | 
						|
directory 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.
 | 
						|
.en XXX ESTALE "Stale NFS file handle"
 | 
						|
A client referenced a an open file, when the file has been deleted.
 | 
						|
.en XXX 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 component.
 | 
						|
..
 | 
						|
.SH DEFINITIONS
 | 
						|
.TP 5
 | 
						|
Process ID
 | 
						|
.br
 | 
						|
Each active process in the system is uniquely identified by a positive
 | 
						|
integer called a process ID.  The range of this ID is from 1 to 29999.
 | 
						|
The special process with process ID 1 is
 | 
						|
.BR init ,
 | 
						|
the ancestor of all processes.
 | 
						|
.TP 5
 | 
						|
Parent process ID
 | 
						|
.br
 | 
						|
A new process is created by a currently active process; (see
 | 
						|
.BR fork (2)).
 | 
						|
The parent process ID of a process is the process ID of its creator,
 | 
						|
unless the creator dies, then
 | 
						|
.B init
 | 
						|
becomes the parent of the orphaned process.
 | 
						|
.TP 5
 | 
						|
Process Group ID
 | 
						|
.br
 | 
						|
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
 | 
						|
.BR kill (2)).
 | 
						|
.TP 5
 | 
						|
Real User ID and Real Group ID
 | 
						|
.br
 | 
						|
Each user on the system is identified by a positive integer
 | 
						|
termed the real user ID.
 | 
						|
.IP
 | 
						|
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.
 | 
						|
(Under standard MINIX 3 this is the only group a process can be a member of.)
 | 
						|
.IP
 | 
						|
All processes have a real user ID and real group ID.
 | 
						|
These are initialized from the equivalent attributes
 | 
						|
of the process that created it.
 | 
						|
.TP 5
 | 
						|
Effective User Id, Effective Group Id, and Access Groups
 | 
						|
.br
 | 
						|
Access to system resources is governed by three values:
 | 
						|
the effective user ID, the effective group ID, and the
 | 
						|
group access list.
 | 
						|
.IP
 | 
						|
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
 | 
						|
.BR execve (2)).
 | 
						|
.IP
 | 
						|
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''.
 | 
						|
The maximum number of additional group ID's is NGROUPS_MAX.
 | 
						|
For MINIX 3 this is 0, but Minix-vmd supports a list of up to 16
 | 
						|
additional group ID's.  (Also known as ``supplemental'' group ID's.)
 | 
						|
.TP 5
 | 
						|
Super-user
 | 
						|
.br
 | 
						|
A process is recognized as a
 | 
						|
.I super-user
 | 
						|
process and is granted special privileges if its effective user ID is 0.
 | 
						|
.TP 5
 | 
						|
Descriptor
 | 
						|
.br
 | 
						|
An integer assigned by the system when a file or device is referenced
 | 
						|
by
 | 
						|
.BR open (2),
 | 
						|
.BR dup (2)
 | 
						|
or
 | 
						|
.BR fcntl (2)
 | 
						|
which uniquely identifies an access path to that file or device from
 | 
						|
a given process or any of its children.
 | 
						|
.TP 5
 | 
						|
File Descriptor
 | 
						|
Older, and often used name for a descriptor.
 | 
						|
.TP 5
 | 
						|
File Name
 | 
						|
.br
 | 
						|
Names consisting of up to NAME_MAX characters may be used to name
 | 
						|
an ordinary file, special file, or directory.  NAME_MAX is the maximum
 | 
						|
of the maximum file name lengths of the supported file systems.
 | 
						|
Excess characters are ignored when too long file names are used for
 | 
						|
files in a given file system.
 | 
						|
The maximum file name length of the V1 and V2 file systems
 | 
						|
is 14 characters.  The Minix-vmd "flex" variants of V1 and V2 have a
 | 
						|
60 character maximum.
 | 
						|
.IP
 | 
						|
The characters in a file name may assume any value representable in
 | 
						|
eight bits excluding 0 (null) and the ASCII code for / (slash).
 | 
						|
.IP
 | 
						|
Note that it is generally unwise to use one of \e'"<>();~$^&*|{}[]?
 | 
						|
as part of file names because of the special meaning attached to these
 | 
						|
characters by the shell.
 | 
						|
.TP 5
 | 
						|
Path Name
 | 
						|
.br
 | 
						|
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 must be less than PATH_MAX characters
 | 
						|
(255 as distributed.)
 | 
						|
.IP
 | 
						|
If a path name begins with a slash, the path search begins at the
 | 
						|
.I root
 | 
						|
directory.
 | 
						|
Otherwise, the search begins from the current working directory.
 | 
						|
A slash by itself names the root directory.  A null pathname is
 | 
						|
illegal, use "." to refer to the current working directory.
 | 
						|
.TP 5
 | 
						|
Directory
 | 
						|
.br
 | 
						|
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
 | 
						|
.I dot
 | 
						|
and
 | 
						|
.I dot-dot
 | 
						|
respectively.  Dot refers to the directory itself and
 | 
						|
dot-dot refers to its parent directory.
 | 
						|
.TP 5
 | 
						|
Root Directory and Current Working Directory
 | 
						|
.br
 | 
						|
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.
 | 
						|
.TP 5
 | 
						|
File Access Permissions
 | 
						|
.br
 | 
						|
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 
 | 
						|
.BR chmod (2)
 | 
						|
call. 
 | 
						|
.IP
 | 
						|
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. 
 | 
						|
.IP
 | 
						|
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.
 | 
						|
.IP
 | 
						|
Read, write, and execute/search permissions on
 | 
						|
a file are granted to a process if:
 | 
						|
.IP
 | 
						|
The process's effective user ID is that of the super-user.
 | 
						|
.IP
 | 
						|
The process's effective user ID matches the user ID of the owner
 | 
						|
of the file and the owner permissions allow the access.
 | 
						|
.IP
 | 
						|
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.
 | 
						|
.IP
 | 
						|
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.
 | 
						|
.IP
 | 
						|
Otherwise, permission is denied.
 | 
						|
.SH SEE ALSO
 | 
						|
.BR intro (3),
 | 
						|
.BR strerror (3).
 |