You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
3.8 KiB

5 years ago
/* errno.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.1.3 */
/* Copyright (C) Codemist Ltd., 1988 */
/* Copyright 1991 ARM Limited. All rights reserved. */
/* version 1 */
/*
* RCS $Revision: 179217 $
* Checkin $Date: 2013-03-12 14:03:19 +0000 (Tue, 12 Mar 2013) $
* Revising $Author: drodgman $
*/
#ifndef __errno_h
#define __errno_h
#define __ARMCLIB_VERSION 5050106
#define _ARMABI_PURE __declspec(__nothrow) __attribute__((const))
#ifndef __ERRNO_DECLS
#define __ERRNO_DECLS
#undef __CLIBNS
#ifdef __cplusplus
namespace std {
#define __CLIBNS std::
extern "C" {
#else
#define __CLIBNS
#endif /* __cplusplus */
extern _ARMABI_PURE volatile int *__aeabi_errno_addr(void);
#ifdef __cplusplus
} /* extern "C" */
} /* namespace std */
#endif /* __cplusplus */
#endif /* __ERRNO_DECLS */
#ifdef __cplusplus
#ifndef __ERRNO_NO_EXPORTS
using ::std::__aeabi_errno_addr;
#endif /* __ERRNO_NO_EXPORTS */
#endif /* __cplusplus */
#define errno (*__CLIBNS __aeabi_errno_addr())
/*
* expands to a modifiable lvalue that has type volatile int, the value of
* which is set to a positive error code by several library functions. It is
* initialised to zero at program startup, but is never set to zero by any
* library function. The value of errno may be set to nonzero by a library
* function call whether or not there is an error, provided the use of errno
* is not documented in the description of the function in the Standard.
*/
/*
* Error numbers defined in the C standard need the ABI portability
* mechanism.
*/
#if _AEABI_PORTABILITY_LEVEL != 0 && !defined _AEABI_PORTABLE
#define _AEABI_PORTABLE
#endif
/* The ABI-defined signal numbers (EDOM, ERANGE and EILSEQ) are
* defined differently depending on ABI conformance level. */
#if _AEABI_PORTABILITY_LEVEL != 0 || (!defined _AEABI_PORTABILITY_LEVEL && __DEFAULT_AEABI_PORTABILITY_LEVEL != 0)
extern const int __aeabi_EDOM;
extern const int __aeabi_ERANGE;
extern const int __aeabi_EILSEQ;
#define EDOM (__aeabi_EDOM)
#define ERANGE (__aeabi_ERANGE)
#define EILSEQ (__aeabi_EILSEQ)
#else
#define EDOM 1
/*
* If a mathematical function suffers a domain error (an input
* argument is outside the domain over which the mathematical
* function is defined, e.g. log of a negative number) the integer
* expression errno acquires the value of the macro EDOM.
*
* EDOM is also returned by ftell, fgetpos and fsetpos when they
* fail.
*/
#define ERANGE 2
/*
* If a mathematical function suffers a range error (the result of
* the function is too large or too small to be accurately
* represented in the output floating-point format), the integer
* expression errno acquires the value of the macro ERANGE.
*
* ERANGE is used by functions in math.h and complex.h, and also by
* the strto* and wcsto* family of decimal-to-binary conversion
* functions (both floating and integer) and by floating-point
* conversions in scanf.
*/
#define EILSEQ 4
/*
* EILSEQ is generated by the restartable multi-byte character
* processing routines to indicate an encoding error: that is, it is
* generated by mbrtowc, wcrtomb, mbsrtowcs and wcsrtombs, but not
* by mbtowc, wctomb, mbstowcs or wcsrtombs.
*
* It is also generated by the wide-character stdio functions:
* fputwc, putwc, putwchar, fputws, fgetwc, getwc, getwchar, fgetws.
*/
#endif /* end of conditional definition of ABI-defined signals */
#define ESIGNUM 3
/*
* ESIGNUM is generated by signal() if the user attempts to change
* the handling of a nonexistent signal. ESIGNUM is not part of the
* ANSI C standard.
*/
#define EINVAL 5
#define ENOMEM 6
/*
* EINVAL and ENOMEM can be generated by posix_memalign().
*/
#endif
/* end of errno.h */