Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
INTRO(2)							      INTRO(2)

       intro, errno - introduction to system calls and error numbers

       #include	<errno.h>

       Section	2  of this manual lists	all the	entries	into the system.  Most
       of these	calls have an error return.  An	error condition	 is  indicated
       by  an  otherwise impossible returned value.  Almost always this	is -1;
       the individual sections specify the details.  An	error number  is  also
       made available in the external variable errno.  Errno is	not cleared on
       successful calls, so it should  be  tested  only	 after	an  error  has

       There  is a table of messages associated	with each error, and a routine
       for printing the	message; See perror(3).	 The  possible	error  numbers
       are  not	 recited with each writeup in section 2, since many errors are
       possible	for most of the	calls.	Here is	a list of the  error  numbers,
       their  names  as	defined	in <errno.h>, and the messages available using

       0       Error 0

       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 whose	number was given to signal and ptrace does not
	      exist, or	is already dead.

       4  EINTR	 Interrupted system call
	      An asynchronous signal (such as interrupt	or  quit),  which  the
	      user  has	 elected  to catch, occurred during a system call.  If
	      execution	is resumed after processing the	signal,	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 a	read or	 write.	  This
	      error  may  in  some  cases occur	on a call following the	one to
	      which it actually	applies.

       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, a tape drive is not dialled  in	or  no	disk  pack  is
	      loaded on	a drive.

       7  E2BIG	 Arg list too long
	      An argument list longer than 5120	bytes is presented to exec.

       8  ENOEXEC  Exec	format error
	      A	 request  is made to execute a file which, although it has the
	      appropriate permissions, does not	start with a valid magic  num-
	      ber, 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  No more processes
	      In a fork, the system's process table is full or the user	is not
	      allowed to create	any more processes.

       12  ENOMEM  Not enough core
	      During an	exec or	break, a program asks for more core  than  the
	      system  is  able	to supply.  This is not	a temporary condition;
	      the maximum core size is a system	parameter.  The	error may also
	      occur  if	 the  arrangement  of  text,  data, and	stack segments
	      requires too many	segmentation registers.

       13  EACCES  Permission denied
	      An attempt was made to access a file in a	way forbidden  by  the
	      protection system.

       14  EFAULT  Bad address
	      The  system encountered a	hardware fault in attempting to	access
	      the arguments of a system	call.

       15  ENOTBLK  Block device required
	      A	plain file was mentioned where a block	device	was  required,
	      e.g. in mount.

       16  EBUSY  Mount	device 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,
	      active text segment).

       17  EEXIST  File	exists
	      An existing file was mentioned in	an inappropriate context, e.g.

       18  EXDEV  Cross-device link
	      A	link to	a file on another device was attempted.

       19  ENODEV  No such device
	      An  attempt  was made to apply an	inappropriate system call to a
	      device; e.g. read	a write-only 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, men-
	      tioning an unknown signal	in signal, reading or writing  a  file
	      for  which  seek	has generated a	negative pointer.  Also	set by
	      math functions, see intro(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
	      Customary	configuration limit is 20 per process.

       25  ENOTTY  Not a typewriter
	      The  file	 mentioned in stty or gtty is not a terminal or	one of
	      the other	devices	to which these calls apply.

       26  ETXTBSY  Text file busy
	      An attempt to execute a pure-procedure program that is currently
	      open  for	 writing  (or  reading!).  Also	an attempt to open for
	      writing a	pure-procedure program that is being executed.

       27  EFBIG  File too large
	      The size of a file exceeded the maximum (about 1.0E9 bytes).

       28  ENOSPC  No space left on device
	      During a write to	an ordinary file, there	is no free space  left
	      on the device.

       29  ESPIPE  Illegal seek
	      An lseek was issued to a pipe.  This error should	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 32767 links to a file.

       32  EPIPE  Broken pipe
	      A	 write	on  a  pipe  for which there is	no process to read the
	      data.  This condition normally generates a signal; the error  is
	      returned if the signal is	ignored.

       33  EDOM	 Math argument
	      The  argument  of	 a function in the math	package	(3M) is	out of
	      the domain of the	function.

       34  ERANGE  Result too large
	      The value	of a function in the math  package  (3M)  is  unrepre-
	      sentable within machine precision.


       as /usr/include/sys.s file ...

       The  PDP11  assembly  language interface	is given for each system call.
       The assembler symbols are defined in `/usr/include/sys.s'.

       Return values appear in registers r0 and	r1; it is unwise to  count  on
       these  registers	 being	preserved when no value	is expected.  An erro-
       neous call is always indicated by turning on the	c-bit of the condition
       codes.	The  error number is returned in r0.  The presence of an error
       is most easily tested by	the instructions bes and bec (`branch on error
       set (or clear)').  These	are synonyms for the bcs and bcc instructions.

       On the Interdata	8/32, the system call arguments	correspond well	to the
       arguments of the	C routines.  The sequence is:

	      la   %2,errno
	      l	   %0,&callno
	      svc  0,args

       Thus  register  2  points to a word into	which the error	number will be
       stored as needed; it is cleared if no error occurs.   Register  0  con-
       tains  the system call number; the nomenclature is identical to that on
       the PDP11.  The argument	of the svc is the address  of  the  arguments,
       laid  out in storage as in the C	calling	sequence.  The return value is
       in register 2 (possibly 3 also, as in pipe) and is -1 in	case of	error.
       The  overflow  bit  in  the program status word is also set when	errors



Want to link to this manual page? Use this URL:

home | help