INTRO.2
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:19k
源码类别:

操作系统开发

开发平台:

C/C++

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