-.\" $OpenBSD: intro.2,v 1.57 2015/01/19 13:59:16 millert Exp $
+.\" $OpenBSD: intro.2,v 1.58 2015/01/19 21:29:38 millert Exp $
.\" $NetBSD: intro.2,v 1.6 1995/02/27 12:33:41 cgd Exp $
.\"
.\" Copyright (c) 1980, 1983, 1986, 1991, 1993
.\".Pp
.\"<more later...>
.Sh DIAGNOSTICS
-Nearly all of the system calls provide an error number in the external
-variable
-.Va errno ,
-which is currently defined as:
-.Pp
-.Dl extern int errno;
-.Pp
-Portable applications must not depend on this definition, and should only
-use
+Nearly all of the system calls provide an error number via the identifier
+.Dv errno ,
+which expands to an addressable location of type
+.Vt int .
+The address of
+.Va errno
+in each thread is guaranteed to be unique for the lifetime of the thread.
+Applications must use
.Va errno
as defined in
-.In errno.h .
+.In errno.h
+and not attempt to use a custom definition.
+.Pp
When a system call detects an error, it returns an integer value
indicating failure (usually \-1) and sets the variable
.Va errno
names as given in
.In sys/errno.h .
.Bl -hang -width Ds
-.It Er 0 Em "Error 0" .
+.It Er 0 Em "Undefined error: 0" .
Not used.
.It Er 1 EPERM Em "Operation not permitted" .
An attempt was made to perform an operation limited to processes