450 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			450 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 complete 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 more than SYMLOOP symbolic links.  SYMLOOP
 | |
| equals 8 as distributed.
 | |
| (Minix-vmd)
 | |
| .en 50 EPACKSIZE "Invalid packet size
 | |
| .en 51 EOUTOFBUFS "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 EBADDEST "Bad destination address
 | |
| .en 56 EDSTNOTRCH "Destination not reachable
 | |
| .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 EINPROGRESS "Operation now in progress
 | |
| .en 68 EALREADY "Operation already in progress
 | |
| .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).
 | 
