1/* Error constants.  Linux specific version.
2   Copyright (C) 1996, 1997, 1998, 1999, 2005 Free Software Foundation, Inc.
3   This file is part of the GNU C Library.
4
5   The GNU C Library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9
10   The GNU C Library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14
15   You should have received a copy of the GNU Lesser General Public
16   License along with the GNU C Library; if not, write to the Free
17   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18   02111-1307 USA.  */
19
20#ifdef _ERRNO_H
21
22# undef EDOM
23# undef EILSEQ
24# undef ERANGE
25# include <linux/errno.h>
26
27/* Linux has no ENOTSUP error code.  */
28# define ENOTSUP EOPNOTSUPP
29
30/* Older Linux versions also had no ECANCELED error code.  */
31# ifndef ECANCELED
32#  define ECANCELED	125
33# endif
34
35/* Support for error codes to support robust mutexes was added later, too.  */
36# ifndef EOWNERDEAD
37#  define EOWNERDEAD		130
38#  define ENOTRECOVERABLE	131
39# endif
40
41# ifndef __ASSEMBLER__
42/* Function to get address of global `errno' variable.  */
43extern int *__errno_location (void) __THROW __attribute__ ((__const__));
44
45#  if !defined _LIBC || defined _LIBC_REENTRANT
46/* When using threads, errno is a per-thread value.  */
47#   define errno (*__errno_location ())
48#  endif
49# endif /* !__ASSEMBLER__ */
50#endif /* _ERRNO_H */
51
52#if !defined _ERRNO_H && defined __need_Emath
53/* This is ugly but the kernel header is not clean enough.  We must
54   define only the values EDOM, EILSEQ and ERANGE in case __need_Emath is
55   defined.  */
56# define EDOM	33	/* Math argument out of domain of function.  */
57# define EILSEQ	84	/* Illegal byte sequence.  */
58# define ERANGE	34	/* Math result not representable.  */
59#endif /* !_ERRNO_H && __need_Emath */
60