1 .\" Copyright (c) 1980,1983,1986 Regents of the University of California.
2 .\" All rights reserved. The Berkeley software License Agreement
3 .\" specifies the terms and conditions for redistribution.
5 .\" @(#)intro.2 6.7 (Berkeley) 5/23/86
7 .TH INTRO 2 "June 30, 1986"
15 intro, errno \- introduction to system calls and error numbers
17 .B "#include <errno.h>"
19 This section describes all of the system calls. Most
20 of these calls have one or more error returns.
21 An error condition is indicated by an otherwise impossible return
22 value. This is almost always \-1; the individual descriptions
24 Note that a number of system calls overload the meanings of these
25 error numbers, and that the meanings must be interpreted according
26 to the type and circumstances of the call.
28 As with normal arguments, all return codes and values from
29 functions are of type integer unless otherwise noted.
30 An error number is also made available in the external
31 variable \fBerrno\fP, which is not cleared
33 Thus \fBerrno\fP should be tested only after an error has occurred.
35 The following is a complete list of the errors and their
39 Unused. (The symbol "OK" is only used inside the kernel source.)
40 .en 1 EPERM "Not owner
41 Typically this error indicates
42 an attempt to modify a file in some way forbidden
43 except to its owner or super-user.
44 It is also returned for attempts
45 by ordinary users to do things
46 allowed only to the super-user.
47 .en 2 ENOENT "No such file or directory
48 This error occurs when a file name is specified
49 and the file should exist but doesn't, or when one
50 of the directories in a path name does not exist.
51 .en 3 ESRCH "No such process
52 The process or process group whose number was given
53 does not exist, or any such process is already dead.
54 .en 4 EINTR "Interrupted system call
55 An asynchronous signal (such as interrupt or quit)
56 that the user has elected to catch
57 occurred during a system call.
58 If execution is resumed
59 after processing the signal
60 and the system call is not restarted,
61 it will appear as if the interrupted system call
62 returned this error condition.
64 Some physical I/O error occurred during an I/O operation, usually
68 Operations on file descriptors that refer to devices that are forcefully
69 taken away or in a bad state will also provoke this error.
70 .en 6 ENXIO "No such device or address
71 I/O on a special file refers to a subdevice that does not
73 or beyond the limits of the device.
74 It may also occur when, for example, an illegal tape drive
75 unit number is selected
76 or a disk pack is not loaded on a drive.
77 .en 7 E2BIG "Arg list too long
78 An argument list longer than ARG_MAX bytes is presented to
80 ARG_MAX is set to 4096 bytes for 16-bit MINIX 3, 16384 bytes for 32-bit
81 MINIX 3, and unlimited for Minix-vmd as these systems are released.
82 .en 8 ENOEXEC "Exec format error
83 A request is made to execute a file
84 that, although it has the appropriate permissions,
85 does not start with a valid magic number, (see
87 .en 9 EBADF "Bad file number
88 Either a file descriptor refers to no
90 or a read (resp. write) request is made to
91 a file that is open only for writing (resp. reading).
92 .en 10 ECHILD "No children
94 and the process has no
95 living or unwaited-for children.
96 .en 11 EAGAIN "Resource temporarily unavailable
99 the system's process table is full or the user is not allowed to create
100 any more processes, otherwise an operation that would cause a process to
101 block was attempted on an object in non-blocking mode (see \fBfcntl\fP(2)).
102 .en 12 ENOMEM "Not enough core
107 a program asks for more (virtual) memory than the system is
109 or a process size limit would be exceeded.
111 of the data+stack segment is set by the
113 program. For Minix-vmd a small data+stack size is increased to 3 megabytes
114 when a program is executed.
115 .en 13 EACCES "Permission denied
116 An attempt was made to access a file in a way forbidden
117 by the protection system. Also an attempt to open a device for writing
118 that is physically write protected.
119 .en 14 EFAULT "Bad address
120 An argument of a system call is outside the address space allocated to a
122 .en 15 ENOTBLK "Block device required
123 A plain file was mentioned where a block device was required,
126 .en 16 EBUSY "Resource busy
127 An attempt to mount a device that was already mounted or
128 an attempt was made to dismount a device
129 on which there is an active file
130 (open file, current directory, mounted-on file, or active text segment).
131 A request was made to an exclusive access device that was already in use.
132 .en 17 EEXIST "File exists
133 An existing file was mentioned in an inappropriate context,
136 .en 18 EXDEV "Cross-device link
137 A hard link to a file on another device
139 .en 19 ENODEV "No such device
140 An attempt was made to access a device that is not configured by the system,
141 i.e., there is no driver for the device.
142 .en 20 ENOTDIR "Not a directory
143 A non-directory was specified where a directory
145 for example, in a path name or
148 .en 21 EISDIR "Is a directory
149 An attempt to write on a directory.
150 .en 22 EINVAL "Invalid argument
151 Some invalid argument:
152 dismounting a non-mounted
154 mentioning an unknown signal in
156 or some other argument inappropriate for the call.
157 Also set by math functions, (see
159 .en 23 ENFILE "File table overflow
160 The system's table of open files is full,
161 and temporarily no more
164 .en 24 EMFILE "Too many open files
165 The limit on the number of open files per process, OPEN_MAX, is reached.
166 As released, this limit is 20 for MINIX 3, and 30 for Minix-vmd.
167 .en 25 ENOTTY "Not a typewriter
168 The file mentioned in an
170 is not a terminal or one of the
171 devices to which this call applies. (Often seen error from programs with
172 bugs in their error reporting code.)
173 .en 26 ETXTBSY "Text file busy
174 Attempt to execute a program that is open for writing. Obsolete under MINIX 3.
175 .en 27 EFBIG "File too large
176 The size of a file exceeded the maximum (little over 64 megabytes for
178 .en 28 ENOSPC "No space left on device
181 to an ordinary file, the creation of a
182 directory or symbolic link, or the creation of a directory
183 entry failed because no more disk blocks are available
184 on the file system, or the allocation of an inode for a newly
185 created file failed because no more inodes are available
187 .en 29 ESPIPE "Illegal seek
190 was issued to a pipe or TCP/IP channel.
191 This error may also be issued for
192 other non-seekable devices.
193 .en 30 EROFS "Read-only file system
194 An attempt to modify a file or directory
196 on a device mounted read-only.
197 .en 31 EMLINK "Too many links
198 An attempt to make more than a certain number of hard links to a file. The
199 advertized maximum, LINK_MAX, is 127, but Minix-vmd uses a much larger
200 maximum of 32767 for the V2 file system.
201 .en 32 EPIPE "Broken pipe
202 A write on a pipe or TCP/IP channel for which there is no process
204 This condition normally generates the signal SIGPIPE;
205 the error is returned if the signal is caught or ignored.
206 .en 33 EDOM "Math argument
207 The argument of a function in the math package
208 is out of the domain of the function.
209 .en 34 ERANGE "Result too large
210 The value of a function in the math package
211 is unrepresentable within machine precision.
212 .en 35 EDEADLK "Resource deadlock avoided
213 A process attempts to place a blocking lock on a file that is already
214 locked by another process and that process is waiting for the first
215 process to unlock a file that first process already has a lock on.
216 (The classic "lock A, lock B" by process 1, and "lock B, lock A" by
218 .en 36 ENAMETOOLONG "File name too long"
219 The path name exceeds PATH_MAX characters. PATH_MAX equals 255 as
221 .en 37 ENOLCK "No locks available
222 The system's table of active locks is full.
223 .en 38 ENOSYS "Function not implemented
224 The system call is not supported. Either an old program uses an obsolete
225 call, or a program for a more capable system is run on a less capable
227 .en 39 ENOTEMPTY "Directory not empty"
228 A directory with entries other than \*(lq.\*(rq and \*(lq..\*(rq
229 was supplied to a remove directory or rename call.
230 .en 40 ELOOP "Too many symbolic links"
231 A path name lookup involved more than SYMLOOP symbolic links. SYMLOOP
232 equals 8 as distributed.
234 .en 50 EPACKSIZE "Invalid packet size
235 .en 51 EOUTOFBUFS "Not enough buffers left
236 .en 52 EBADIOCTL "Illegal ioctl for device
237 .en 53 EBADMODE "Bad mode in ioctl
238 .en 54 EWOULDBLOCK "Would block
239 .en 55 EBADDEST "Bad destination address
240 .en 56 EDSTNOTRCH "Destination not reachable
241 .en 57 EISCONN "Already connected
242 .en 58 EADDRINUSE "Address in use
243 .en 59 ECONNREFUSED "Connection refused
244 .en 60 ECONNRESET "Connection reset
245 .en 61 ETIMEDOUT "Connection timed out
246 .en 62 EURG "Urgent data present
247 .en 63 ENOURG "No urgent data present
248 .en 64 ENOTCONN "No connection
249 .en 65 ESHUTDOWN "Already shutdown
250 .en 66 ENOCONN "No such connection
251 .en 67 EINPROGRESS "Operation now in progress
252 .en 68 EALREADY "Operation already in progress
254 .en XXX EDQUOT "Disc quota exceeded"
257 to an ordinary file, the creation of a
258 directory or symbolic link, or the creation of a directory
259 entry failed because the user's quota of disk blocks was
260 exhausted, or the allocation of an inode for a newly
261 created file failed because the user's quota of inodes
263 .en XXX ESTALE "Stale NFS file handle"
264 A client referenced a an open file, when the file has been deleted.
265 .en XXX EREMOTE "Too many levels of remote in path"
266 An attempt was made to remotely mount a file system into a path which
267 already has a remotely mounted component.
273 Each active process in the system is uniquely identified by a positive
274 integer called a process ID. The range of this ID is from 1 to 29999.
275 The special process with process ID 1 is
277 the ancestor of all processes.
281 A new process is created by a currently active process; (see
283 The parent process ID of a process is the process ID of its creator,
284 unless the creator dies, then
286 becomes the parent of the orphaned process.
290 Each active process is a member of a process group that is identified by
291 a positive integer called the process group ID. This is the process
292 ID of the group leader. This grouping permits the signaling of related
296 Real User ID and Real Group ID
298 Each user on the system is identified by a positive integer
299 termed the real user ID.
301 Each user is also a member of one or more groups.
302 One of these groups is distinguished from others and
303 used in implementing accounting facilities. The positive
304 integer corresponding to this distinguished group is termed
306 (Under standard MINIX 3 this is the only group a process can be a member of.)
308 All processes have a real user ID and real group ID.
309 These are initialized from the equivalent attributes
310 of the process that created it.
312 Effective User Id, Effective Group Id, and Access Groups
314 Access to system resources is governed by three values:
315 the effective user ID, the effective group ID, and the
318 The effective user ID and effective group ID are initially the
319 process's real user ID and real group ID respectively. Either
320 may be modified through execution of a set-user-ID or set-group-ID
321 file (possibly by one its ancestors) (see
324 The group access list is an additional set of group ID's
325 used only in determining resource accessibility. Access checks
326 are performed as described below in ``File Access Permissions''.
327 The maximum number of additional group ID's is NGROUPS_MAX.
328 For MINIX 3 this is 0, but Minix-vmd supports a list of up to 16
329 additional group ID's. (Also known as ``supplemental'' group ID's.)
333 A process is recognized as a
335 process and is granted special privileges if its effective user ID is 0.
339 An integer assigned by the system when a file or device is referenced
345 which uniquely identifies an access path to that file or device from
346 a given process or any of its children.
349 Older, and often used name for a descriptor.
353 Names consisting of up to NAME_MAX characters may be used to name
354 an ordinary file, special file, or directory. NAME_MAX is the maximum
355 of the maximum file name lengths of the supported file systems.
356 Excess characters are ignored when too long file names are used for
357 files in a given file system.
358 The maximum file name length of the V1 and V2 file systems
359 is 14 characters. The Minix-vmd "flex" variants of V1 and V2 have a
360 60 character maximum.
362 The characters in a file name may assume any value representable in
363 eight bits excluding 0 (null) and the ASCII code for / (slash).
365 Note that it is generally unwise to use one of \e'"<>();~$^&*|{}[]?
366 as part of file names because of the special meaning attached to these
367 characters by the shell.
371 A path name is a null-terminated character string starting with an
372 optional slash (/), followed by zero or more directory names separated
373 by slashes, optionally followed by a file name.
374 The total length of a path name must be less than PATH_MAX characters
375 (255 as distributed.)
377 If a path name begins with a slash, the path search begins at the
380 Otherwise, the search begins from the current working directory.
381 A slash by itself names the root directory. A null pathname is
382 illegal, use "." to refer to the current working directory.
386 A directory is a special type of file that contains entries
387 that are references to other files.
388 Directory entries are called links. By convention, a directory
389 contains at least two links, . and .., referred to as
393 respectively. Dot refers to the directory itself and
394 dot-dot refers to its parent directory.
396 Root Directory and Current Working Directory
398 Each process has associated with it a concept of a root directory
399 and a current working directory for the purpose of resolving path
400 name searches. A process's root directory need not be the root
401 directory of the root file system.
403 File Access Permissions
405 Every file in the file system has a set of access permissions.
406 These permissions are used in determining whether a process
407 may perform a requested operation on the file (such as opening
408 a file for writing). Access permissions are established at the
409 time a file is created. They may be changed at some later time
414 File access is broken down according to whether a file may be: read,
415 written, or executed. Directory files use the execute
416 permission to control if the directory may be searched.
418 File access permissions are interpreted by the system as
419 they apply to three different classes of users: the owner
420 of the file, those users in the file's group, anyone else.
421 Every file has an independent set of access permissions for
422 each of these classes. When an access check is made, the system
423 decides if permission should be granted by checking the access
424 information applicable to the caller.
426 Read, write, and execute/search permissions on
427 a file are granted to a process if:
429 The process's effective user ID is that of the super-user.
431 The process's effective user ID matches the user ID of the owner
432 of the file and the owner permissions allow the access.
434 The process's effective user ID does not match the user ID of the
435 owner of the file, and either the process's effective
436 group ID matches the group ID
437 of the file, or the group ID of the file is in
438 the process's group access list,
439 and the group permissions allow the access.
441 Neither the effective user ID nor effective group ID
442 and group access list of the process
443 match the corresponding user ID and group ID of the file,
444 but the permissions for ``other users'' allow access.
446 Otherwise, permission is denied.