.\" $NetBSD: errno.9,v 1.5 2010/03/22 18:58:33 joerg Exp $
.\"
.\" Copyright (c) 2004 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Andrew Brown.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd December 3, 2004
.Dt ERRNO 9
.Os
.Sh NAME
.Nm errno
.Nd kernel internal error numbers
.Sh SYNOPSIS
.In sys/errno.h
.Sh DESCRIPTION
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.
.Sh DIAGNOSTICS
Kernel functions that indicate success or failure by means of either 0
or an
.Xr errno 2
value sometimes have a need to indicate that
.Dq special
handling is required at an upper layer or, in the case of
.Xr ioctl 2
processing, that
.Dq nothing was wrong but the request was not handled .
To handle these cases, some negative
.Xr errno 2
values are defined which are handled by the kernel before returning a
different
.Xr errno 2
value to userland or simply zero.
.Pp
The following is a list of the defined names and their meanings as
given in
.In errno.h .
It is important to note that the value \-1 is
.Em not
used, since it is commonly used to indicate generic failure and leaves
it up to the caller to determine the action to take.
.Bl -hang -width Ds
.It Er \-2 EJUSTRETURN Em "Modify regs, just return" .
No more work is required and the function should just return.
.It Er \-3 ERESTART Em "Restart 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.
.It Er \-4 EPASSTHROUGH Em "Operation not handled by this layer" .
The operation was not handled and should be passed through to another
layer.
This often occurs when processing
.Xr ioctl 2
requests since lower layer processing may not handle something that
subsequent code at a higher level will.
.It Er \-5 EDUPFD Em "Duplicate file descriptor."
This error is returned from the device open routine indicating that
the
.Ar 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
.Ar l_dupfd
to that new file descriptor and return
.Er EDUPFD .
.Xr vn_open 9
takes the file descriptor pointed to by
.Ar l_dupfd
and copies it to the file descriptor that the open call will return.
.It Er \-6 EMOVEFD Em "Move file descriptor."
This error is similar to
.Er EDUPFD
except that the file descriptor in
.Ar l_dupfd
is closed after it has been copied.
.El
.Sh SEE ALSO
.Xr errno 2 ,
.Xr ioctl 9
.Sh HISTORY
An
.Nm
manual page appeared in
.At v6 .
This
.Nm
manual page appeared in
.Nx 3.0 .