errno —
kernel internal error numbers
This section provides an overview of the error numbers used internally by the
  kernel and indicate neither success nor failure. These error numbers are not
  returned to userland code.
Kernel functions that indicate success or failure by means of either 0 or an
  errno(2) value sometimes have a
  need to indicate that “special” handling is required at an upper
  layer or, in the case of ioctl(2)
  processing, that “nothing was wrong but the request was not
  handled”. To handle these cases, some negative
  errno(2) values are defined which
  are handled by the kernel before returning a different
  errno(2) value to userland or
  simply zero.
The following is a list of the defined names and their meanings as
    given in <errno.h>. It is
    important to note that the value -1 is not used, since it
    is commonly used to indicate generic failure and leaves it up to the caller
    to determine the action to take.
  - -2 EJUSTRETURNModify regs, just
    return.
- No more work is required and the function should just return.
- -3 ERESTARTRestart
    syscall.
- The system call should be restarted. This typically means that the machine
      dependent system call trap code will reposition the process's instruction
      pointer or program counter to re-execute the current system call with no
      other work required.
- -4 EPASSTHROUGHOperation not
    handled by this layer.
- The operation was not handled and should be passed through to another
      layer. This often occurs when processing
      ioctl(2) requests since lower
      layer processing may not handle something that subsequent code at a higher
      level will.
- -5 EDUPFDDuplicate file
    descriptor.
- This error is returned from the device open routine indicating that the
      l_dupfd field contains the file descriptor
      information to be returned to the caller, instead of the file descriptor
      that has been opened already. This error is used by cloning device
      multiplexors. Cloning device multiplexors open a new file descriptor and
      associate that file descriptor with the appropriate cloned device. They
      set l_dupfd to that new file descriptor and return
      EDUPFD.
      vn_open(9) takes the file
      descriptor pointed to by l_dupfd and arranges for it
      to be copied to the file descriptor that the open call will return.
- -6 EMOVEFDMove file
    descriptor.
- This error is similar to EDUPFDexcept that the
      file descriptor in l_dupfd is closed after it has
      been copied.
Anerrno manual page appeared in
  Version 6 AT&T UNIX. This
  errno manual page appeared in NetBSD
  3.0.