INTRO.2
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:19k
- INTRO(2) Minix Programmer's Manual INTRO(2)
- NAME
- intro, errno - introduction to system calls and error numbers
- SYNOPSIS
- #include <errno.h>
- 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.
- 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 errno, which is not cleared on
- successful calls. Thus errno should be tested only after an error has
- occurred.
- The following is a complete list of the errors and their names as given
- in <sys/errno.h>:
- 0 OK Error 0
- Unused. (The symbol "OK" is only used inside the kernel source.)
- 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.
- 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 or process group whose number was given does not exist, or
- any such process is already dead.
- 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.
- 5 EIO I/O error
- Some physical I/O error occurred during an I/O operation, usually read or
- write. Operations on file descriptors that refer to devices that are
- 4BSD June 30, 1986 1
- INTRO(2) Minix Programmer's Manual INTRO(2)
- forcefully taken away or in a bad state will also provoke this error.
- 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.
- 7 E2BIG Arg list too long
- An argument list longer than ARG_MAX bytes is presented to execve.
- ARG_MAX is set to 4096 bytes for 16-bit Minix, 16384 bytes for 32-bit
- Minix, and unlimited for Minix-vmd as these systems are released.
- 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 a.out(5)).
- 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).
- 10 ECHILD No children
- Wait and the process has no living or unwaited-for children.
- 11 EAGAIN Resource temporarily unavailable
- In a 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
- fcntl(2)).
- 12 ENOMEM Not enough core
- During an execve or 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 chmem(1)
- program. For Minix-vmd a small data+stack size is increased to 3
- megabytes when a program is executed.
- 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.
- 14 EFAULT Bad address
- An argument of a system call is outside the address space allocated to a
- process.
- 15 ENOTBLK Block device required
- A plain file was mentioned where a block device was required, e.g., in
- mount.
- 4BSD June 30, 1986 2
- INTRO(2) Minix Programmer's Manual INTRO(2)
- 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.
- 17 EEXIST File exists
- An existing file was mentioned in an inappropriate context, e.g., link.
- 18 EXDEV Cross-device link
- A hard link to a file on another device was attempted.
- 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.
- 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: dismounting a non-mounted device, mentioning an
- unknown signal in signal, or some other argument inappropriate for the
- call. Also set by math functions, (see math(3)).
- 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
- The limit on the number of open files per process, OPEN_MAX, is reached.
- As released, this limit is 20 for Minix, and 30 for Minix-vmd.
- 25 ENOTTY Not a typewriter
- The file mentioned in an 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.)
- 26 ETXTBSY Text file busy
- Attempt to execute a program that is open for writing. Obsolete under
- Minix.
- 27 EFBIG File too large
- The size of a file exceeded the maximum (little over 64 megabytes for the
- V2 file system).
- 4BSD June 30, 1986 3
- INTRO(2) Minix Programmer's Manual INTRO(2)
- 28 ENOSPC No space left on device
- A 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.
- 29 ESPIPE Illegal seek
- An lseek was issued to a pipe or TCP/IP channel. This error may 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 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.
- 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.
- 33 EDOM Math argument
- The argument of a function in the math package is out of the domain of
- the function.
- 34 ERANGE Result too large
- The value of a function in the math package is unrepresentable within
- machine precision.
- 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.)
- 36 ENAMETOOLONG File name too long
- The path name exceeds PATH_MAX characters. PATH_MAX equals 255 as
- distributed.
- 37 ENOLCK No locks available
- The system's table of active locks is full.
- 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
- 4BSD June 30, 1986 4
- INTRO(2) Minix Programmer's Manual INTRO(2)
- system.
- 39 ENOTEMPTY Directory not empty
- A directory with entries other than "." and ".." was supplied to a
- remove directory or rename call.
- 40 ELOOP Too many symbolic links
- A path name lookup involved more than SYMLOOP symbolic links. SYMLOOP
- equals 8 as distributed. (Minix-vmd)
- 50 EPACKSIZE Invalid packet size
- 51 EOUTOFBUFS Not enough buffers left
- 52 EBADIOCTL Illegal ioctl for device
- 53 EBADMODE Bad mode in ioctl
- 54 EWOULDBLOCK Would block
- 55 EBADDEST Bad destination address
- 56 EDSTNOTRCH Destination not reachable
- 57 EISCONN Already connected
- 58 EADDRINUSE Address in use
- 59 ECONNREFUSED Connection refused
- 60 ECONNRESET Connection reset
- 61 ETIMEDOUT Connection timed out
- 62 EURG Urgent data present
- 63 ENOURG No urgent data present
- 64 ENOTCONN No connection
- 65 ESHUTDOWN Already shutdown
- 66 ENOCONN No such connection
- 67 EINPROGRESS Operation now in progress
- 68 EALREADY Operation already in progress
- 4BSD June 30, 1986 5
- INTRO(2) Minix Programmer's Manual INTRO(2)
- DEFINITIONS
- Process ID
- 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 init, the
- ancestor of all processes.
- Parent process ID
- A new process is created by a currently active process; (see
- fork(2)). The parent process ID of a process is the process ID of
- its creator, unless the creator dies, then init becomes the parent
- of the orphaned process.
- Process Group ID
- 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 kill(2)).
- Real User ID and Real Group ID
- Each user on the system is identified by a positive integer termed
- the real user ID.
- 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 this is the only group a process can be a member of.)
- All processes have a real user ID and real group ID. These are
- initialized from the equivalent attributes of the process that
- created it.
- Effective User Id, Effective Group Id, and Access Groups
- Access to system resources is governed by three values: the
- effective user ID, the effective group ID, and the group access
- list.
- 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 execve(2)).
- 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 this is
- 0, but Minix-vmd supports a list of up to 16 additional group ID's.
- (Also known as ``supplemental'' group ID's.)
- 4BSD June 30, 1986 6
- INTRO(2) Minix Programmer's Manual INTRO(2)
- Super-user
- A process is recognized as a super-user process and is granted
- special privileges if its effective user ID is 0.
- Descriptor
- An integer assigned by the system when a file or device is
- referenced by open(2), dup(2) or fcntl(2) which uniquely identifies
- an access path to that file or device from a given process or any of
- its children.
- File Descriptor
- Older, and often used name for a descriptor.
- File Name
- 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.
- The characters in a file name may assume any value representable in
- eight bits excluding 0 (null) and the ASCII code for / (slash).
- Note that it is generally unwise to use one of '"<>();~$^&*|{}[]?
- as part of file names because of the special meaning attached to
- these characters by the shell.
- Path Name
- 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.)
- If a path name begins with a slash, the path search begins at the
- 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.
- Directory
- 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 dot and dot-dot respectively. Dot refers to the
- directory itself and dot-dot refers to its parent directory.
- 4BSD June 30, 1986 7
- INTRO(2) Minix Programmer's Manual INTRO(2)
- Root Directory and Current Working Directory
- 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.
- File Access Permissions
- 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
- chmod(2) call.
- 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.
- 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.
- Read, write, and execute/search permissions on a file are granted to
- a process if:
- The process's effective user ID is that of the super-user.
- The process's effective user ID matches the user ID of the owner of
- the file and the owner permissions allow the access.
- 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.
- 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.
- Otherwise, permission is denied.
- 4BSD June 30, 1986 8
- INTRO(2) Minix Programmer's Manual INTRO(2)
- SEE ALSO
- intro(3), strerror(3).
- 4BSD June 30, 1986 9