/contrib/sdk/sources/newlib/libc/include/_ansi.h |
---|
35,7 → 35,7 |
#define _END_STD_C } |
#endif |
#if __GNUC_PREREQ (3, 3) |
#define _NOTHROW __attribute__ ((nothrow)) |
#define _NOTHROW __attribute__ ((__nothrow__)) |
#else |
#define _NOTHROW throw() |
#endif |
72,9 → 72,6 |
#ifndef _LONG_DOUBLE |
#define _LONG_DOUBLE long double |
#endif |
#ifndef _LONG_LONG_TYPE |
#define _LONG_LONG_TYPE long long |
#endif |
#ifndef _PARAMS |
#define _PARAMS(paramlist) paramlist |
#endif |
93,7 → 90,6 |
#define _DEFUN_VOID(name) name() |
#define _CAST_VOID |
#define _LONG_DOUBLE double |
#define _LONG_LONG_TYPE long |
#ifndef _PARAMS |
#define _PARAMS(paramlist) () |
#endif |
/contrib/sdk/sources/newlib/libc/include/complex.h |
---|
83,6 → 83,7 |
float cabsf(float complex) __RENAME(__c99_cabsf); |
#endif |
*/ |
long double cabsl(long double complex) ; |
double cabs(double complex) ; |
float cabsf(float complex) ; |
102,7 → 103,7 |
/* 7.3.9.2 The cimag functions */ |
double cimag(double complex); |
float cimagf(float complex); |
/*long double cimagl(long double complex); */ |
long double cimagl(long double complex); |
/* 7.3.9.3 The conj functions */ |
double complex conj(double complex); |
117,7 → 118,7 |
/* 7.3.9.5 The creal functions */ |
double creal(double complex); |
float crealf(float complex); |
/*long double creall(long double complex); */ |
long double creall(long double complex); |
__END_DECLS |
/contrib/sdk/sources/newlib/libc/include/ctype.h |
---|
39,11 → 39,10 |
#define _X 0100 |
#define _B 0200 |
extern |
#ifndef _MB_CAPABLE |
_CONST |
#endif |
__IMPORT char *__ctype_ptr__; |
extern __IMPORT char *__ctype_ptr__; |
#ifndef __cplusplus |
/* These macros are intentionally written in a manner that will trigger |
/contrib/sdk/sources/newlib/libc/include/grp.h |
---|
43,6 → 43,7 |
#ifndef _GRP_H_ |
#define _GRP_H_ |
#include <sys/cdefs.h> |
#include <sys/types.h> |
#ifdef __CYGWIN__ |
#include <cygwin/grp.h> |
/contrib/sdk/sources/newlib/libc/include/ieeefp.h |
---|
4,11 → 4,12 |
#include "_ansi.h" |
#include <machine/ieeefp.h> |
#include <float.h> |
_BEGIN_STD_C |
/* FIXME FIXME FIXME: |
Neither of __ieee_{float,double}_shape_tape seem to be used anywhere |
Neither of __ieee_{float,double}_shape_type seem to be used anywhere |
except in libm/test. If that is the case, please delete these from here. |
If that is not the case, please insert documentation here describing why |
they're needed. */ |
46,10 → 47,8 |
long aslong[2]; |
} __ieee_double_shape_type; |
#endif |
#elif defined __IEEE_LITTLE_ENDIAN |
#ifdef __IEEE_LITTLE_ENDIAN |
typedef union |
{ |
double value; |
92,7 → 91,7 |
} __ieee_double_shape_type; |
#endif |
#endif /* __IEEE_LITTLE_ENDIAN */ |
#ifdef __IEEE_BIG_ENDIAN |
118,10 → 117,8 |
} __ieee_float_shape_type; |
#endif |
#elif defined __IEEE_LITTLE_ENDIAN |
#ifdef __IEEE_LITTLE_ENDIAN |
typedef union |
{ |
float value; |
144,12 → 141,72 |
} __ieee_float_shape_type; |
#endif /* __IEEE_LITTLE_ENDIAN */ |
#ifndef _LDBL_EQ_DBL |
#ifndef LDBL_MANT_DIG |
#error "LDBL_MANT_DIG not defined - should be found in float.h" |
#elif LDBL_MANT_DIG == DBL_MANT_DIG |
#error "double and long double are the same size but LDBL_EQ_DBL is not defined" |
#elif LDBL_MANT_DIG == 53 |
/* This happens when doubles are 32-bits and long doubles are 64-bits. */ |
#define EXT_EXPBITS 11 |
#define EXT_FRACHBITS 20 |
#define EXT_FRACLBITS 32 |
#define __ieee_ext_field_type unsigned long |
#elif LDBL_MANT_DIG == 64 |
#define EXT_EXPBITS 15 |
#define EXT_FRACHBITS 32 |
#define EXT_FRACLBITS 32 |
#define __ieee_ext_field_type unsigned int |
#elif LDBL_MANT_DIG == 65 |
#define EXT_EXPBITS 15 |
#define EXT_FRACHBITS 32 |
#define EXT_FRACLBITS 32 |
#define __ieee_ext_field_type unsigned int |
#elif LDBL_MANT_DIG == 112 |
#define EXT_EXPBITS 15 |
#define EXT_FRACHBITS 48 |
#define EXT_FRACLBITS 64 |
#define __ieee_ext_field_type unsigned long long |
#elif LDBL_MANT_DIG == 113 |
#define EXT_EXPBITS 15 |
#define EXT_FRACHBITS 48 |
#define EXT_FRACLBITS 64 |
#define __ieee_ext_field_type unsigned long long |
#else |
#error Unsupported value for LDBL_MANT_DIG |
#endif |
#define EXT_EXP_INFNAN ((1 << EXT_EXPBITS) - 1) /* 32767 */ |
#define EXT_EXP_BIAS ((1 << (EXT_EXPBITS - 1)) - 1) /* 16383 */ |
#define EXT_FRACBITS (EXT_FRACLBITS + EXT_FRACHBITS) |
typedef struct ieee_ext |
{ |
__ieee_ext_field_type ext_fracl : EXT_FRACLBITS; |
__ieee_ext_field_type ext_frach : EXT_FRACHBITS; |
__ieee_ext_field_type ext_exp : EXT_EXPBITS; |
__ieee_ext_field_type ext_sign : 1; |
} ieee_ext; |
typedef union ieee_ext_u |
{ |
long double extu_ld; |
struct ieee_ext extu_ext; |
} ieee_ext_u; |
#endif /* ! _LDBL_EQ_DBL */ |
/* FLOATING ROUNDING */ |
typedef int fp_rnd; |
/contrib/sdk/sources/newlib/libc/include/inttypes.h |
---|
13,27 → 13,37 |
#ifndef _INTTYPES_H |
#define _INTTYPES_H |
#include <sys/features.h> |
#include <newlib.h> |
#include <sys/config.h> |
#include <sys/_intsup.h> |
#include <stdint.h> |
#define __need_wchar_t |
#include <stddef.h> |
/* Don't use __STDINT_EXP test since GCC's stdint.h provides different |
macros than newlib's stdint.h. */ |
#if __GNUC_PREREQ(3, 2) |
#define __INTTYPES_EXP(x) __##x##__ |
#else |
#define __INTTYPES_EXP(x) x |
#include <limits.h> |
#endif |
#define __STRINGIFY(a) #a |
/* 8-bit types */ |
#define __PRI8(x) __STRINGIFY(x) |
#define __SCN8(x) __STRINGIFY(hh##x) |
#define __PRI8(x) __INT8 __STRINGIFY(x) |
#define __PRI8LEAST(x) __LEAST8 __STRINGIFY(x) |
#define __PRI8FAST(x) __FAST8 __STRINGIFY(x) |
/* NOTICE: scanning 8-bit types requires use of the hh specifier |
* which is only supported on newlib platforms that |
* are built with C99 I/O format support enabled. If the flag in |
* newlib.h hasn't been set during configuration to indicate this, the 8-bit |
* scanning format macros are disabled here as they result in undefined |
* behaviour which can include memory overwrite. Overriding the flag after the |
* library has been built is not recommended as it will expose the underlying |
* undefined behaviour. |
*/ |
#if defined(_WANT_IO_C99_FORMATS) |
#define __SCN8(x) __INT8 __STRINGIFY(x) |
#define __SCN8LEAST(x) __LEAST8 __STRINGIFY(x) |
#define __SCN8FAST(x) __FAST8 __STRINGIFY(x) |
#endif /* _WANT_IO_C99_FORMATS */ |
#define PRId8 __PRI8(d) |
#define PRIi8 __PRI8(i) |
#define PRIo8 __PRI8(o) |
41,6 → 51,9 |
#define PRIx8 __PRI8(x) |
#define PRIX8 __PRI8(X) |
/* Macros below are only enabled for a newlib built with C99 I/O format support. */ |
#if defined(_WANT_IO_C99_FORMATS) |
#define SCNd8 __SCN8(d) |
#define SCNi8 __SCN8(i) |
#define SCNo8 __SCN8(o) |
47,37 → 60,52 |
#define SCNu8 __SCN8(u) |
#define SCNx8 __SCN8(x) |
#endif /* _WANT_IO_C99_FORMATS */ |
#define PRIdLEAST8 __PRI8(d) |
#define PRIiLEAST8 __PRI8(i) |
#define PRIoLEAST8 __PRI8(o) |
#define PRIuLEAST8 __PRI8(u) |
#define PRIxLEAST8 __PRI8(x) |
#define PRIXLEAST8 __PRI8(X) |
#define SCNdLEAST8 __SCN8(d) |
#define SCNiLEAST8 __SCN8(i) |
#define SCNoLEAST8 __SCN8(o) |
#define SCNuLEAST8 __SCN8(u) |
#define SCNxLEAST8 __SCN8(x) |
#define PRIdLEAST8 __PRI8LEAST(d) |
#define PRIiLEAST8 __PRI8LEAST(i) |
#define PRIoLEAST8 __PRI8LEAST(o) |
#define PRIuLEAST8 __PRI8LEAST(u) |
#define PRIxLEAST8 __PRI8LEAST(x) |
#define PRIXLEAST8 __PRI8LEAST(X) |
/* Macros below are only enabled for a newlib built with C99 I/O format support. */ |
#if defined(_WANT_IO_C99_FORMATS) |
#define PRIdFAST8 __PRI8(d) |
#define PRIiFAST8 __PRI8(i) |
#define PRIoFAST8 __PRI8(o) |
#define PRIuFAST8 __PRI8(u) |
#define PRIxFAST8 __PRI8(x) |
#define PRIXFAST8 __PRI8(X) |
#define SCNdLEAST8 __SCN8LEAST(d) |
#define SCNiLEAST8 __SCN8LEAST(i) |
#define SCNoLEAST8 __SCN8LEAST(o) |
#define SCNuLEAST8 __SCN8LEAST(u) |
#define SCNxLEAST8 __SCN8LEAST(x) |
#define SCNdFAST8 __SCN8(d) |
#define SCNiFAST8 __SCN8(i) |
#define SCNoFAST8 __SCN8(o) |
#define SCNuFAST8 __SCN8(u) |
#define SCNxFAST8 __SCN8(x) |
#endif /* _WANT_IO_C99_FORMATS */ |
#define PRIdFAST8 __PRI8FAST(d) |
#define PRIiFAST8 __PRI8FAST(i) |
#define PRIoFAST8 __PRI8FAST(o) |
#define PRIuFAST8 __PRI8FAST(u) |
#define PRIxFAST8 __PRI8FAST(x) |
#define PRIXFAST8 __PRI8FAST(X) |
/* Macros below are only enabled for a newlib built with C99 I/O format support. */ |
#if defined(_WANT_IO_C99_FORMATS) |
#define SCNdFAST8 __SCN8FAST(d) |
#define SCNiFAST8 __SCN8FAST(i) |
#define SCNoFAST8 __SCN8FAST(o) |
#define SCNuFAST8 __SCN8FAST(u) |
#define SCNxFAST8 __SCN8FAST(x) |
#endif /* _WANT_IO_C99_FORMATS */ |
/* 16-bit types */ |
#define __PRI16(x) __STRINGIFY(x) |
#define __SCN16(x) __STRINGIFY(h##x) |
#define __PRI16(x) __INT16 __STRINGIFY(x) |
#define __PRI16LEAST(x) __LEAST16 __STRINGIFY(x) |
#define __PRI16FAST(x) __FAST16 __STRINGIFY(x) |
#define __SCN16(x) __INT16 __STRINGIFY(x) |
#define __SCN16LEAST(x) __LEAST16 __STRINGIFY(x) |
#define __SCN16FAST(x) __FAST16 __STRINGIFY(x) |
#define PRId16 __PRI16(d) |
94,41 → 122,40 |
#define SCNx16 __SCN16(x) |
#define PRIdLEAST16 __PRI16(d) |
#define PRIiLEAST16 __PRI16(i) |
#define PRIoLEAST16 __PRI16(o) |
#define PRIuLEAST16 __PRI16(u) |
#define PRIxLEAST16 __PRI16(x) |
#define PRIXLEAST16 __PRI16(X) |
#define PRIdLEAST16 __PRI16LEAST(d) |
#define PRIiLEAST16 __PRI16LEAST(i) |
#define PRIoLEAST16 __PRI16LEAST(o) |
#define PRIuLEAST16 __PRI16LEAST(u) |
#define PRIxLEAST16 __PRI16LEAST(x) |
#define PRIXLEAST16 __PRI16LEAST(X) |
#define SCNdLEAST16 __SCN16(d) |
#define SCNiLEAST16 __SCN16(i) |
#define SCNoLEAST16 __SCN16(o) |
#define SCNuLEAST16 __SCN16(u) |
#define SCNxLEAST16 __SCN16(x) |
#define SCNdLEAST16 __SCN16LEAST(d) |
#define SCNiLEAST16 __SCN16LEAST(i) |
#define SCNoLEAST16 __SCN16LEAST(o) |
#define SCNuLEAST16 __SCN16LEAST(u) |
#define SCNxLEAST16 __SCN16LEAST(x) |
#define PRIdFAST16 __PRI16(d) |
#define PRIiFAST16 __PRI16(i) |
#define PRIoFAST16 __PRI16(o) |
#define PRIuFAST16 __PRI16(u) |
#define PRIxFAST16 __PRI16(x) |
#define PRIXFAST16 __PRI16(X) |
#define PRIdFAST16 __PRI16FAST(d) |
#define PRIiFAST16 __PRI16FAST(i) |
#define PRIoFAST16 __PRI16FAST(o) |
#define PRIuFAST16 __PRI16FAST(u) |
#define PRIxFAST16 __PRI16FAST(x) |
#define PRIXFAST16 __PRI16FAST(X) |
#define SCNdFAST16 __SCN16(d) |
#define SCNiFAST16 __SCN16(i) |
#define SCNoFAST16 __SCN16(o) |
#define SCNuFAST16 __SCN16(u) |
#define SCNxFAST16 __SCN16(x) |
#define SCNdFAST16 __SCN16FAST(d) |
#define SCNiFAST16 __SCN16FAST(i) |
#define SCNoFAST16 __SCN16FAST(o) |
#define SCNuFAST16 __SCN16FAST(u) |
#define SCNxFAST16 __SCN16FAST(x) |
/* 32-bit types */ |
#if __have_long32 |
#define __PRI32(x) __STRINGIFY(l##x) |
#define __SCN32(x) __STRINGIFY(l##x) |
#else |
#define __PRI32(x) __STRINGIFY(x) |
#define __SCN32(x) __STRINGIFY(x) |
#endif |
#define __PRI32(x) __INT32 __STRINGIFY(x) |
#define __SCN32(x) __INT32 __STRINGIFY(x) |
#define __PRI32LEAST(x) __LEAST32 __STRINGIFY(x) |
#define __SCN32LEAST(x) __LEAST32 __STRINGIFY(x) |
#define __PRI32FAST(x) __FAST32 __STRINGIFY(x) |
#define __SCN32FAST(x) __FAST32 __STRINGIFY(x) |
#define PRId32 __PRI32(d) |
#define PRIi32 __PRI32(i) |
144,46 → 171,44 |
#define SCNx32 __SCN32(x) |
#define PRIdLEAST32 __PRI32(d) |
#define PRIiLEAST32 __PRI32(i) |
#define PRIoLEAST32 __PRI32(o) |
#define PRIuLEAST32 __PRI32(u) |
#define PRIxLEAST32 __PRI32(x) |
#define PRIXLEAST32 __PRI32(X) |
#define PRIdLEAST32 __PRI32LEAST(d) |
#define PRIiLEAST32 __PRI32LEAST(i) |
#define PRIoLEAST32 __PRI32LEAST(o) |
#define PRIuLEAST32 __PRI32LEAST(u) |
#define PRIxLEAST32 __PRI32LEAST(x) |
#define PRIXLEAST32 __PRI32LEAST(X) |
#define SCNdLEAST32 __SCN32(d) |
#define SCNiLEAST32 __SCN32(i) |
#define SCNoLEAST32 __SCN32(o) |
#define SCNuLEAST32 __SCN32(u) |
#define SCNxLEAST32 __SCN32(x) |
#define SCNdLEAST32 __SCN32LEAST(d) |
#define SCNiLEAST32 __SCN32LEAST(i) |
#define SCNoLEAST32 __SCN32LEAST(o) |
#define SCNuLEAST32 __SCN32LEAST(u) |
#define SCNxLEAST32 __SCN32LEAST(x) |
#define PRIdFAST32 __PRI32(d) |
#define PRIiFAST32 __PRI32(i) |
#define PRIoFAST32 __PRI32(o) |
#define PRIuFAST32 __PRI32(u) |
#define PRIxFAST32 __PRI32(x) |
#define PRIXFAST32 __PRI32(X) |
#define PRIdFAST32 __PRI32FAST(d) |
#define PRIiFAST32 __PRI32FAST(i) |
#define PRIoFAST32 __PRI32FAST(o) |
#define PRIuFAST32 __PRI32FAST(u) |
#define PRIxFAST32 __PRI32FAST(x) |
#define PRIXFAST32 __PRI32FAST(X) |
#define SCNdFAST32 __SCN32(d) |
#define SCNiFAST32 __SCN32(i) |
#define SCNoFAST32 __SCN32(o) |
#define SCNuFAST32 __SCN32(u) |
#define SCNxFAST32 __SCN32(x) |
#define SCNdFAST32 __SCN32FAST(d) |
#define SCNiFAST32 __SCN32FAST(i) |
#define SCNoFAST32 __SCN32FAST(o) |
#define SCNuFAST32 __SCN32FAST(u) |
#define SCNxFAST32 __SCN32FAST(x) |
/* 64-bit types */ |
#if __have_long64 |
#define __PRI64(x) __STRINGIFY(l##x) |
#define __SCN64(x) __STRINGIFY(l##x) |
#elif __have_longlong64 |
#define __PRI64(x) __STRINGIFY(I64##x) |
#define __SCN64(x) __STRINGIFY(I64##x) |
#else |
#define __PRI64(x) __STRINGIFY(x) |
#define __SCN64(x) __STRINGIFY(x) |
#endif |
#define __PRI64(x) __INT64 __STRINGIFY(x) |
#define __SCN64(x) __INT64 __STRINGIFY(x) |
#define __PRI64LEAST(x) __LEAST64 __STRINGIFY(x) |
#define __SCN64LEAST(x) __LEAST64 __STRINGIFY(x) |
#define __PRI64FAST(x) __FAST64 __STRINGIFY(x) |
#define __SCN64FAST(x) __FAST64 __STRINGIFY(x) |
#if __int64_t_defined |
#define PRId64 __PRI64(d) |
#define PRIi64 __PRI64(i) |
#define PRIo64 __PRI64(o) |
196,34 → 221,36 |
#define SCNo64 __SCN64(o) |
#define SCNu64 __SCN64(u) |
#define SCNx64 __SCN64(x) |
#endif |
#if __int64_t_defined |
#define PRIdLEAST64 __PRI64(d) |
#define PRIiLEAST64 __PRI64(i) |
#define PRIoLEAST64 __PRI64(o) |
#define PRIuLEAST64 __PRI64(u) |
#define PRIxLEAST64 __PRI64(x) |
#define PRIXLEAST64 __PRI64(X) |
#if __int_least64_t_defined |
#define PRIdLEAST64 __PRI64LEAST(d) |
#define PRIiLEAST64 __PRI64LEAST(i) |
#define PRIoLEAST64 __PRI64LEAST(o) |
#define PRIuLEAST64 __PRI64LEAST(u) |
#define PRIxLEAST64 __PRI64LEAST(x) |
#define PRIXLEAST64 __PRI64LEAST(X) |
#define SCNdLEAST64 __SCN64(d) |
#define SCNiLEAST64 __SCN64(i) |
#define SCNoLEAST64 __SCN64(o) |
#define SCNuLEAST64 __SCN64(u) |
#define SCNxLEAST64 __SCN64(x) |
#define SCNdLEAST64 __SCN64LEAST(d) |
#define SCNiLEAST64 __SCN64LEAST(i) |
#define SCNoLEAST64 __SCN64LEAST(o) |
#define SCNuLEAST64 __SCN64LEAST(u) |
#define SCNxLEAST64 __SCN64LEAST(x) |
#endif |
#if __int_fast64_t_defined |
#define PRIdFAST64 __PRI64FAST(d) |
#define PRIiFAST64 __PRI64FAST(i) |
#define PRIoFAST64 __PRI64FAST(o) |
#define PRIuFAST64 __PRI64FAST(u) |
#define PRIxFAST64 __PRI64FAST(x) |
#define PRIXFAST64 __PRI64FAST(X) |
#define PRIdFAST64 __PRI64(d) |
#define PRIiFAST64 __PRI64(i) |
#define PRIoFAST64 __PRI64(o) |
#define PRIuFAST64 __PRI64(u) |
#define PRIxFAST64 __PRI64(x) |
#define PRIXFAST64 __PRI64(X) |
#define SCNdFAST64 __SCN64(d) |
#define SCNiFAST64 __SCN64(i) |
#define SCNoFAST64 __SCN64(o) |
#define SCNuFAST64 __SCN64(u) |
#define SCNxFAST64 __SCN64(x) |
#define SCNdFAST64 __SCN64FAST(d) |
#define SCNiFAST64 __SCN64FAST(i) |
#define SCNoFAST64 __SCN64FAST(o) |
#define SCNuFAST64 __SCN64FAST(u) |
#define SCNxFAST64 __SCN64FAST(x) |
#endif |
/* max-bit types */ |
252,15 → 279,15 |
#define SCNxMAX __SCNMAX(x) |
/* ptr types */ |
#if PTRDIFF_MAX <= __INTTYPES_EXP(INT_MAX) |
# define __PRIPTR(x) __STRINGIFY(x) |
# define __SCNPTR(x) __STRINGIFY(x) |
#elif PTRDIFF_MAX <= __INTTYPES_EXP(LONG_MAX) || !defined(__have_longlong64) |
#if defined (_INTPTR_EQ_LONGLONG) |
# define __PRIPTR(x) __STRINGIFY(ll##x) |
# define __SCNPTR(x) __STRINGIFY(ll##x) |
#elif defined (_INTPTR_EQ_LONG) |
# define __PRIPTR(x) __STRINGIFY(l##x) |
# define __SCNPTR(x) __STRINGIFY(l##x) |
#else |
# define __PRIPTR(x) __STRINGIFY(ll##x) |
# define __SCNPTR(x) __STRINGIFY(ll##x) |
# define __PRIPTR(x) __STRINGIFY(x) |
# define __SCNPTR(x) __STRINGIFY(x) |
#endif |
#define PRIdPTR __PRIPTR(d) |
/contrib/sdk/sources/newlib/libc/include/kos32sys.h |
---|
52,8 → 52,34 |
int out_size; |
}ioctl_t; |
static inline void begin_draw(void) |
{ |
__asm__ __volatile__( |
"int $0x40" ::"a"(12),"b"(1)); |
}; |
static inline |
void end_draw(void) |
{ |
__asm__ __volatile__( |
"int $0x40" ::"a"(12),"b"(2)); |
}; |
static inline |
void sys_create_window(int x, int y, int w, int h, const char *name, |
color_t workcolor, uint32_t style) |
{ |
__asm__ __volatile__( |
"int $0x40" |
::"a"(0), |
"b"((x << 16) | ((w-1) & 0xFFFF)), |
"c"((y << 16) | ((h-1) & 0xFFFF)), |
"d"((style << 24) | (workcolor & 0xFFFFFF)), |
"D"(name), |
"S"(0) : "memory"); |
}; |
static inline |
void define_button(uint32_t x_w, uint32_t y_h, uint32_t id, uint32_t color) |
{ |
__asm__ __volatile__( |
64,49 → 90,75 |
"d"(id), |
"S"(color)); |
}; |
static inline void DefineButton(void) __attribute__ ((alias ("define_button"))); |
static inline |
uint32_t get_skin_height(void) |
void draw_line(int xs, int ys, int xe, int ye, color_t color) |
{ |
uint32_t height; |
__asm__ __volatile__( |
"int $0x40" |
::"a"(38), "d"(color), |
"b"((xs << 16) | xe), |
"c"((ys << 16) | ye)); |
} |
static inline |
void draw_bar(int x, int y, int w, int h, color_t color) |
{ |
__asm__ __volatile__( |
"int $0x40 \n\t" |
:"=a"(height) |
:"a"(48),"b"(4)); |
return height; |
}; |
static inline uint32_t GetSkinHeight(void) __attribute__ ((alias ("get_skin_height"))); |
"int $0x40" |
::"a"(13), "d"(color), |
"b"((x << 16) | w), |
"c"((y << 16) | h)); |
} |
static inline |
void BeginDraw(void) |
void draw_bitmap(void *bitmap, int x, int y, int w, int h) |
{ |
__asm__ __volatile__( |
"int $0x40" ::"a"(12),"b"(1)); |
}; |
"int $0x40" |
::"a"(7), "b"(bitmap), |
"c"((w << 16) | h), |
"d"((x << 16) | y)); |
} |
static inline |
void EndDraw(void) |
void draw_text_sys(const char *text, int x, int y, int len, color_t color) |
{ |
__asm__ __volatile__( |
"int $0x40" ::"a"(12),"b"(2)); |
}; |
"int $0x40" |
::"a"(4),"d"(text), |
"b"((x << 16) | y), |
"S"(len),"c"(color) |
:"memory"); |
} |
static inline void DrawWindow(int x, int y, int w, int h, const char *name, |
color_t workcolor, uint32_t style) |
static inline |
uint32_t get_skin_height(void) |
{ |
uint32_t height; |
__asm__ __volatile__( |
"int $0x40" |
::"a"(0), |
"b"((x << 16) | ((w-1) & 0xFFFF)), |
"c"((y << 16) | ((h-1) & 0xFFFF)), |
"d"((style << 24) | (workcolor & 0xFFFFFF)), |
"D"(name), |
"S"(0) : "memory"); |
"int $0x40 \n\t" |
:"=a"(height) |
:"a"(48),"b"(4)); |
return height; |
}; |
static inline void BeginDraw(void) __attribute__ ((alias ("begin_draw"))); |
static inline void EndDraw(void) __attribute__ ((alias ("end_draw"))); |
static inline void DrawWindow(int x, int y, int w, int h, const char *name, |
color_t workcolor, uint32_t style) |
__attribute__ ((alias ("sys_create_window"))); |
static inline void DefineButton(void) __attribute__ ((alias ("define_button"))); |
static inline void DrawLine(int xs, int ys, int xe, int ye, color_t color) |
__attribute__ ((alias ("draw_line"))); |
static inline void DrawBar(int x, int y, int w, int h, color_t color) |
__attribute__ ((alias ("draw_bar"))); |
static inline void DrawBitmap(void *bitmap, int x, int y, int w, int h) |
__attribute__ ((alias ("draw_bitmap"))); |
static inline uint32_t GetSkinHeight(void) __attribute__ ((alias ("get_skin_height"))); |
#define POS_SCREEN 0 |
#define POS_WINDOW 1 |
122,7 → 174,6 |
:"a"(37),"b"(origin)); |
return val; |
} |
static inline pos_t GetMousePos(int origin) __attribute__ ((alias ("get_mouse_pos"))); |
static inline |
uint32_t get_mouse_buttons(void) |
135,7 → 186,6 |
:"a"(37),"b"(2)); |
return val; |
}; |
static inline uint32_t GetMouseButtons(void) __attribute__ ((alias ("get_mouse_buttons"))); |
static inline |
uint32_t get_mouse_wheels(void) |
148,8 → 198,47 |
:"a"(37),"b"(7)); |
return val; |
}; |
static inline uint32_t load_cursor(void *path, uint32_t flags) |
{ |
uint32_t val; |
__asm__ __volatile__( |
"int $0x40" |
:"=a"(val) |
:"a"(37), "b"(4), "c"(path), "d"(flags)); |
return val; |
} |
static inline uint32_t set_cursor(uint32_t cursor) |
{ |
uint32_t old; |
__asm__ __volatile__( |
"int $0x40" |
:"=a"(old) |
:"a"(37), "b"(5), "c"(cursor)); |
return old; |
}; |
static inline int destroy_cursor(uint32_t cursor) |
{ |
int ret; |
__asm__ __volatile__( |
"int $0x40" |
:"=a"(ret) |
:"a"(37), "b"(6), "c"(cursor) |
:"memory"); |
return ret; |
}; |
static inline pos_t GetMousePos(int origin) __attribute__ ((alias ("get_mouse_pos"))); |
static inline uint32_t GetMouseButtons(void) __attribute__ ((alias ("get_mouse_buttons"))); |
static inline uint32_t GetMouseWheels(void) __attribute__ ((alias ("get_mouse_wheels"))); |
static inline uint32_t LoadCursor(void *path, uint32_t flags) __attribute__ ((alias ("load_cursor"))); |
static inline uint32_t SetCursor(uint32_t cursor) __attribute__ ((alias ("set_cursor"))); |
static inline int DestroyCursor(uint32_t cursor) __attribute__ ((alias ("destroy_cursor"))); |
static inline |
uint32_t wait_for_event(uint32_t time) |
{ |
252,49 → 341,6 |
}; |
static inline |
void draw_line(int xs, int ys, int xe, int ye, color_t color) |
{ |
__asm__ __volatile__( |
"int $0x40" |
::"a"(38), "d"(color), |
"b"((xs << 16) | xe), |
"c"((ys << 16) | ye)); |
} |
static inline |
void draw_bar(int x, int y, int w, int h, color_t color) |
{ |
__asm__ __volatile__( |
"int $0x40" |
::"a"(13), "d"(color), |
"b"((x << 16) | w), |
"c"((y << 16) | h)); |
} |
static inline |
void draw_bitmap(void *bitmap, int x, int y, int w, int h) |
{ |
__asm__ __volatile__( |
"int $0x40" |
::"a"(7), "b"(bitmap), |
"c"((w << 16) | h), |
"d"((x << 16) | y)); |
} |
static inline |
void draw_text_sys(const char *text, int x, int y, int len, color_t color) |
{ |
__asm__ __volatile__( |
"int $0x40" |
::"a"(4),"d"(text), |
"b"((x << 16) | y), |
"S"(len),"c"(color) |
:"memory"); |
} |
static inline void yield(void) |
{ |
__asm__ __volatile__( |
320,7 → 366,6 |
:"a"(68),"b"(12),"c"(size)); |
return val; |
} |
static inline void *UserAlloc(size_t size) __attribute__ ((alias ("user_alloc"))); |
static inline |
int user_free(void *mem) |
332,9 → 377,21 |
:"a"(68),"b"(13),"c"(mem)); |
return val; |
} |
static inline int UserFree(void *mem) __attribute__ ((alias ("user_free"))); |
static inline |
void* user_realloc(void *mem, size_t size) |
{ |
void *val; |
__asm__ __volatile__( |
"int $0x40" |
:"=a"(val) |
:"a"(68),"b"(20),"c"(size),"d"(mem) |
:"memory"); |
return val; |
}; |
static inline |
int *user_unmap(void *base, size_t offset, size_t size) |
{ |
int *val; |
344,6 → 401,10 |
:"a"(68),"b"(26),"c"(base),"d"(offset),"S"(size)); |
return val; |
}; |
static inline void *UserAlloc(size_t size) __attribute__ ((alias ("user_alloc"))); |
static inline int UserFree(void *mem) __attribute__ ((alias ("user_free"))); |
static inline void* UserRealloc(void *mem, size_t size) __attribute__ ((alias ("user_realloc"))); |
static inline int *UserUnmap(void *base, size_t offset, size_t size) __attribute__ ((alias ("user_unmap"))); |
typedef union |
356,7 → 417,6 |
unsigned long long raw; |
}ufile_t; |
static inline ufile_t load_file(const char *path) |
{ |
ufile_t uf; |
381,44 → 441,7 |
return retval; |
} |
static inline |
uint32_t load_cursor(void *path, uint32_t flags) |
{ |
uint32_t val; |
__asm__ __volatile__( |
"int $0x40" |
:"=a"(val) |
:"a"(37), "b"(4), "c"(path), "d"(flags)); |
return val; |
} |
static inline |
uint32_t LoadCursor(void *path, uint32_t flags) __attribute__ ((alias ("load_cursor"))); |
static inline |
uint32_t set_cursor(uint32_t cursor) |
{ |
uint32_t old; |
__asm__ __volatile__( |
"int $0x40" |
:"=a"(old) |
:"a"(37), "b"(5), "c"(cursor)); |
return old; |
}; |
static inline uint32_t SetCursor(uint32_t cursor) __attribute__ ((alias ("set_cursor"))); |
static inline |
int destroy_cursor(uint32_t cursor) |
{ |
int ret; |
__asm__ __volatile__( |
"int $0x40" |
:"=a"(ret) |
:"a"(37), "b"(6), "c"(cursor) |
:"memory"); |
return ret; |
}; |
static inline int DestroyCursor(uint32_t cursor) __attribute__ ((alias ("destroy_cursor"))); |
static inline void get_proc_info(char *info) |
{ |
__asm__ __volatile__( |
429,22 → 452,7 |
}; |
static inline void GetProcInfo(char *info) __attribute__ ((alias ("get_proc_info"))); |
static inline |
void* user_realloc(void *mem, size_t size) |
{ |
void *val; |
__asm__ __volatile__( |
"int $0x40" |
:"=a"(val) |
:"a"(68),"b"(20),"c"(size),"d"(mem) |
:"memory"); |
return val; |
}; |
static inline void* UserRealloc(void *mem, size_t size) __attribute__ ((alias ("user_realloc"))); |
void *get_resource(void *data, uint32_t id); |
struct blit_call |
{ |
int dstx; |
483,6 → 491,8 |
::"a"(73),"b"(0),"c"(&bc.dstx)); |
}; |
int create_thread(int (*proc)(void *param), void *param, int stack_size); |
void* load_library(const char *name); |
void* get_proc_address(void *handle, const char *proc_name); |
/contrib/sdk/sources/newlib/libc/include/libgen.h |
---|
6,6 → 6,7 |
#define _LIBGEN_H_ |
#include "_ansi.h" |
#include <sys/cdefs.h> |
#include <sys/reent.h> |
#ifdef __cplusplus |
12,7 → 13,20 |
extern "C" { |
#endif |
char *_EXFUN(basename, (char *)); |
/* There are two common basename variants. If you do NOT #include <libgen.h> |
and you do |
#define _GNU_SOURCE |
#include <string.h> |
you get the GNU version. Otherwise you get the POSIX versionfor which you |
should #include <libgen.h>i for the function prototype. POSIX requires that |
#undef basename will still let you invoke the underlying function. However, |
this also implies that the POSIX version is used in this case. That's made |
sure here. */ |
#undef basename |
#define basename __xpg_basename |
char *_EXFUN(basename, (char *)) __asm__(__ASMNAME("basename")); |
char *_EXFUN(dirname, (char *)); |
#ifdef __cplusplus |
/contrib/sdk/sources/newlib/libc/include/libsync.h |
---|
56,7 → 56,7 |
while (exchange_acquire (&mutex->lock, 2) != 0) |
{ |
asm volatile( |
"int $0x40\t" |
"int $0x40\t\n" |
:"=a"(tmp) |
:"a"(77),"b"(FUTEX_WAIT), |
"c"(mutex->handle),"d"(2),"S"(0)); |
63,12 → 63,12 |
} |
}; |
static inline void mutex_lock_timeout(mutex_t *mutex, int timeout) |
static inline int mutex_lock_timeout(mutex_t *mutex, int timeout) |
{ |
int tmp; |
int tmp = 0; |
if( __sync_fetch_and_add(&mutex->lock, 1) == 0) |
return; |
return 1; |
while (exchange_acquire (&mutex->lock, 2) != 0) |
{ |
77,7 → 77,11 |
:"=a"(tmp) |
:"a"(77),"b"(FUTEX_WAIT), |
"c"(mutex->handle),"d"(2),"S"(timeout)); |
if(++tmp == 0) |
break; |
} |
return tmp ; |
}; |
static inline int mutex_trylock (mutex_t *mutex) |
/contrib/sdk/sources/newlib/libc/include/machine/_default_types.h |
---|
1,5 → 1,5 |
/* |
* $Id: _default_types.h,v 1.6 2013/12/03 16:04:41 corinna Exp $ |
* $Id$ |
*/ |
#ifndef _MACHINE__DEFAULT_TYPES_H |
25,7 → 25,11 |
#ifdef __INT8_TYPE__ |
typedef __INT8_TYPE__ __int8_t; |
#ifdef __UINT8_TYPE__ |
typedef __UINT8_TYPE__ __uint8_t; |
#else |
typedef unsigned __INT8_TYPE__ __uint8_t; |
#endif |
#define ___int8_t_defined 1 |
#elif __EXP(SCHAR_MAX) == 0x7f |
typedef signed char __int8_t ; |
35,7 → 39,11 |
#ifdef __INT16_TYPE__ |
typedef __INT16_TYPE__ __int16_t; |
#ifdef __UINT16_TYPE__ |
typedef __UINT16_TYPE__ __uint16_t; |
#else |
typedef unsigned __INT16_TYPE__ __uint16_t; |
#endif |
#define ___int16_t_defined 1 |
#elif __EXP(INT_MAX) == 0x7fff |
typedef signed int __int16_t; |
53,7 → 61,11 |
#ifdef __INT32_TYPE__ |
typedef __INT32_TYPE__ __int32_t; |
#ifdef __UINT32_TYPE__ |
typedef __UINT32_TYPE__ __uint32_t; |
#else |
typedef unsigned __INT32_TYPE__ __uint32_t; |
#endif |
#define ___int32_t_defined 1 |
#elif __EXP(INT_MAX) == 0x7fffffffL |
typedef signed int __int32_t; |
75,7 → 87,11 |
#ifdef __INT64_TYPE__ |
typedef __INT64_TYPE__ __int64_t; |
#ifdef __UINT64_TYPE__ |
typedef __UINT64_TYPE__ __uint64_t; |
#else |
typedef unsigned __INT64_TYPE__ __uint64_t; |
#endif |
#define ___int64_t_defined 1 |
#elif __EXP(LONG_MAX) > 0x7fffffff |
typedef signed long __int64_t; |
102,7 → 118,11 |
#ifdef __INT_LEAST8_TYPE__ |
typedef __INT_LEAST8_TYPE__ __int_least8_t; |
#ifdef __UINT_LEAST8_TYPE__ |
typedef __UINT_LEAST8_TYPE__ __uint_least8_t; |
#else |
typedef unsigned __INT_LEAST8_TYPE__ __uint_least8_t; |
#endif |
#define ___int_least8_t_defined 1 |
#elif defined(___int8_t_defined) |
typedef __int8_t __int_least8_t; |
124,7 → 144,11 |
#ifdef __INT_LEAST16_TYPE__ |
typedef __INT_LEAST16_TYPE__ __int_least16_t; |
#ifdef __UINT_LEAST16_TYPE__ |
typedef __UINT_LEAST16_TYPE__ __uint_least16_t; |
#else |
typedef unsigned __INT_LEAST16_TYPE__ __uint_least16_t; |
#endif |
#define ___int_least16_t_defined 1 |
#elif defined(___int16_t_defined) |
typedef __int16_t __int_least16_t; |
142,7 → 166,11 |
#ifdef __INT_LEAST32_TYPE__ |
typedef __INT_LEAST32_TYPE__ __int_least32_t; |
#ifdef __UINT_LEAST32_TYPE__ |
typedef __UINT_LEAST32_TYPE__ __uint_least32_t; |
#else |
typedef unsigned __INT_LEAST32_TYPE__ __uint_least32_t; |
#endif |
#define ___int_least32_t_defined 1 |
#elif defined(___int32_t_defined) |
typedef __int32_t __int_least32_t; |
156,7 → 184,11 |
#ifdef __INT_LEAST64_TYPE__ |
typedef __INT_LEAST64_TYPE__ __int_least64_t; |
#ifdef __UINT_LEAST64_TYPE__ |
typedef __UINT_LEAST64_TYPE__ __uint_least64_t; |
#else |
typedef unsigned __INT_LEAST64_TYPE__ __uint_least64_t; |
#endif |
#define ___int_least64_t_defined 1 |
#elif defined(___int64_t_defined) |
typedef __int64_t __int_least64_t; |
166,7 → 198,11 |
#ifdef __INTPTR_TYPE__ |
typedef __INTPTR_TYPE__ __intptr_t; |
#ifdef __UINTPTR_TYPE__ |
typedef __UINTPTR_TYPE__ __uintptr_t; |
#else |
typedef unsigned __INTPTR_TYPE__ __uintptr_t; |
#endif |
#elif defined(__PTRDIFF_TYPE__) |
typedef __PTRDIFF_TYPE__ __intptr_t; |
typedef unsigned __PTRDIFF_TYPE__ __uintptr_t; |
/contrib/sdk/sources/newlib/libc/include/machine/_types.h |
---|
1,5 → 1,5 |
/* |
* $Id: _types.h,v 1.3 2007/09/07 21:16:25 jjohnstn Exp $ |
* $Id$ |
*/ |
#ifndef _MACHINE__TYPES_H |
/contrib/sdk/sources/newlib/libc/include/machine/ieeefp.h |
---|
283,6 → 283,10 |
#define __IEEE_BIG_ENDIAN |
#endif |
#ifdef __FT32__ |
#define __IEEE_LITTLE_ENDIAN |
#endif |
#ifdef __mcore__ |
#define __IEEE_BIG_ENDIAN |
#endif |
316,7 → 320,7 |
#define _DOUBLE_IS_32BITS |
#endif |
#if defined(__or32__) || defined(__or1k__) || defined(__or16__) |
#if defined(__or1k__) || defined(__OR1K__) || defined(__OR1KND__) |
#define __IEEE_BIG_ENDIAN |
#endif |
379,8 → 383,10 |
#ifdef __RL78__ |
#define __IEEE_LITTLE_ENDIAN |
#define __SMALL_BITFIELDS /* 16 Bit INT */ |
#ifndef __RL78_64BIT_DOUBLES__ |
#define _DOUBLE_IS_32BITS |
#endif |
#endif |
#ifdef __RX__ |
413,6 → 419,10 |
# endif |
#endif |
#ifdef __VISIUM__ |
#define __IEEE_BIG_ENDIAN |
#endif |
#ifndef __IEEE_BIG_ENDIAN |
#ifndef __IEEE_LITTLE_ENDIAN |
#error Endianess not declared!! |
/contrib/sdk/sources/newlib/libc/include/machine/setjmp.h |
---|
1,6 → 1,11 |
_BEGIN_STD_C |
#if defined(__or1k__) || defined(__or1knd__) |
#define _JBLEN 31 /* 32 GPRs - r0 */ |
#define _JBTYPE unsigned long |
#endif |
#if defined(__arm__) || defined(__thumb__) |
/* |
* All callee preserved registers: |
56,11 → 61,18 |
#endif |
#ifdef __nds32__ |
/* Only 17 words are currently needed. |
Preserve one word slot if we need to expand. |
Check newlib/libc/machine/nds32/setjmp.S for more information. */ |
/* 17 words for GPRs, |
1 word for $fpcfg.freg and 30 words for FPUs |
Reserved 2 words for aligement-adjustment. When storeing double-precision |
floating-point register into memory, the address has to be |
double-word-aligned. |
Check libc/machine/nds32/setjmp.S for more information. */ |
#if __NDS32_EXT_FPU_SP__ || __NDS32_EXT_FPU_DP__ |
#define _JBLEN 50 |
#else |
#define _JBLEN 18 |
#endif |
#endif |
#if defined(__Z8001__) || defined(__Z8002__) |
/* 16 regs + pc */ |
106,7 → 118,7 |
#endif |
#ifdef __mips__ |
# if defined(__mips64) || (__mips_fpr == 64) |
# if defined(__mips64) |
# define _JBTYPE long long |
# endif |
# ifdef __mips_soft_float |
238,6 → 250,10 |
#define _JBLEN 10 |
#endif |
#ifdef __FT32__ |
#define _JBLEN 27 |
#endif |
#ifdef __iq2000__ |
#define _JBLEN 32 |
#endif |
246,6 → 262,10 |
#define _JBLEN 16 |
#endif |
#ifdef __arc__ |
#define _JBLEN 25 /* r13-r30,blink,lp_count,lp_start,lp_end,mlo,mhi,status32 */ |
#endif |
#ifdef __MMIX__ |
/* Using a layout compatible with GCC's built-in. */ |
#define _JBLEN 5 |
275,6 → 295,10 |
#define _JBLEN 18 |
#endif |
#ifdef __ia64 |
#define _JBLEN 64 |
#endif |
#ifdef __lm32__ |
#define _JBLEN 19 |
#endif |
326,6 → 350,11 |
#define _JBLEN 0x44 |
#endif |
#ifdef __VISIUM__ |
/* All call-saved GP registers: r11-r19,r21,r22,r23. */ |
#define _JBLEN 12 |
#endif |
#ifdef _JBLEN |
#ifdef _JBTYPE |
typedef _JBTYPE jmp_buf[_JBLEN]; |
364,6 → 393,13 |
#define __SIGMASK_FUNC sigprocmask |
#endif |
#ifdef __CYGWIN__ |
/* Per POSIX, siglongjmp has to be implemented as function. Cygwin |
provides functions for both, siglongjmp and sigsetjmp since 2.2.0. */ |
extern void siglongjmp (sigjmp_buf, int) __attribute__ ((__noreturn__)); |
extern int sigsetjmp (sigjmp_buf, int); |
#endif |
#if defined(__GNUC__) |
#define sigsetjmp(env, savemask) \ |
401,7 → 437,7 |
are equivalent to sigsetjmp/siglongjmp when not saving the signal mask. |
New applications should use sigsetjmp/siglongjmp instead. */ |
#ifdef __CYGWIN__ |
extern void _longjmp(jmp_buf, int); |
extern void _longjmp (jmp_buf, int) __attribute__ ((__noreturn__)); |
extern int _setjmp(jmp_buf); |
#else |
#define _setjmp(env) sigsetjmp ((env), 0) |
/contrib/sdk/sources/newlib/libc/include/machine/time.h |
---|
1,19 → 1,15 |
#ifndef _MACHTIME_H_ |
#define _MACHTIME_H_ |
#if defined(__rtems__) |
#define _CLOCKS_PER_SEC_ sysconf(_SC_CLK_TCK) |
#else /* !__rtems__ */ |
#if defined(__aarch64__) || defined(__arm__) || defined(__thumb__) |
#if defined(__rtems__) || defined(__VISIUM__) |
#define _CLOCKS_PER_SEC_ 1000000 |
#elif defined(__aarch64__) || defined(__arm__) || defined(__thumb__) |
#define _CLOCKS_PER_SEC_ 100 |
#endif |
#endif /* !__rtems__ */ |
#ifdef __SPU__ |
#include <sys/types.h> |
#include <sys/_timespec.h> |
int nanosleep (const struct timespec *, struct timespec *); |
#endif |
#endif /* _MACHTIME_H_ */ |
/contrib/sdk/sources/newlib/libc/include/machine/types.h |
---|
25,6 → 25,8 |
#endif |
#endif |
typedef long __suseconds_t; /* microseconds (signed) */ |
#endif /* _MACHTYPES_H_ */ |
/contrib/sdk/sources/newlib/libc/include/math.h |
---|
136,7 → 136,8 |
#endif /* ! defined (__math_68881) */ |
#endif /* ! defined (_REENT_ONLY) */ |
#if !defined(__STRICT_ANSI__) || defined(__cplusplus) || __STDC_VERSION__ >= 199901L |
#if !defined(__STRICT_ANSI__) || defined(__cplusplus) || \ |
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) |
/* ISO C99 types and macros. */ |
253,6 → 254,10 |
(__extension__ ({__typeof__(a) __a = (a); __typeof__(b) __b = (b); \ |
fpclassify(__a) == FP_NAN || fpclassify(__b) == FP_NAN;})) |
/* Non ANSI long double precision functions. */ |
extern int finitel _PARAMS((long double)); |
/* Non ANSI double precision functions. */ |
extern double infinity _PARAMS((void)); |
273,7 → 278,7 |
extern double tgamma _PARAMS((double)); |
extern double nearbyint _PARAMS((double)); |
extern long int lrint _PARAMS((double)); |
extern _LONG_LONG_TYPE int llrint _PARAMS((double)); |
extern long long int llrint _PARAMS((double)); |
extern double round _PARAMS((double)); |
extern long int lround _PARAMS((double)); |
extern long long int llround _PARAMS((double)); |
343,7 → 348,7 |
extern float tgammaf _PARAMS((float)); |
extern float nearbyintf _PARAMS((float)); |
extern long int lrintf _PARAMS((float)); |
extern _LONG_LONG_TYPE llrintf _PARAMS((float)); |
extern long long int llrintf _PARAMS((float)); |
extern float roundf _PARAMS((float)); |
extern long int lroundf _PARAMS((float)); |
extern long long int llroundf _PARAMS((float)); |
390,7 → 395,7 |
extern long double sinl _PARAMS((long double)); |
extern long double tanl _PARAMS((long double)); |
extern long double tanhl _PARAMS((long double)); |
extern long double frexpl _PARAMS((long double value, int *)); |
extern long double frexpl _PARAMS((long double, int *)); |
extern long double modfl _PARAMS((long double, long double *)); |
extern long double ceill _PARAMS((long double)); |
extern long double fabsl _PARAMS((long double)); |
422,6 → 427,11 |
extern long double asinhl _PARAMS((long double)); |
extern long double cbrtl _PARAMS((long double)); |
extern long double nextafterl _PARAMS((long double, long double)); |
extern float nexttowardf _PARAMS((float, long double)); |
extern double nexttoward _PARAMS((double, long double)); |
extern long double nexttowardl _PARAMS((long double, long double)); |
extern long double logbl _PARAMS((long double)); |
extern long double log2l _PARAMS((long double)); |
extern long double rintl _PARAMS((long double)); |
extern long double scalbnl _PARAMS((long double, int)); |
extern long double exp2l _PARAMS((long double)); |
432,7 → 442,7 |
extern long long int llrintl _PARAMS((long double)); |
extern long double roundl _PARAMS((long double)); |
extern long lroundl _PARAMS((long double)); |
extern _LONG_LONG_TYPE int llroundl _PARAMS((long double)); |
extern long long int llroundl _PARAMS((long double)); |
extern long double truncl _PARAMS((long double)); |
extern long double remquol _PARAMS((long double, long double, int *)); |
extern long double fdiml _PARAMS((long double, long double)); |
448,15 → 458,17 |
extern long double erfcl _PARAMS((long double)); |
#endif /* ! defined (_REENT_ONLY) */ |
#else /* !_LDBL_EQ_DBL */ |
extern long double hypotl _PARAMS((long double, long double)); |
extern long double sqrtl _PARAMS((long double)); |
#ifdef __i386__ |
/* Other long double precision functions. */ |
extern _LONG_DOUBLE rintl _PARAMS((_LONG_DOUBLE)); |
extern long int lrintl _PARAMS((_LONG_DOUBLE)); |
extern _LONG_LONG_TYPE llrintl _PARAMS((_LONG_DOUBLE)); |
extern long long int llrintl _PARAMS((_LONG_DOUBLE)); |
#endif /* __i386__ */ |
#endif /* !_LDBL_EQ_DBL */ |
#endif /* !defined (__STRICT_ANSI__) || defined(__cplusplus) || __STDC_VERSION__ >= 199901L */ |
#endif /* !defined (__STRICT_ANSI__) || defined(__cplusplus) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) */ |
#if !defined (__STRICT_ANSI__) || defined(__cplusplus) |
542,8 → 554,12 |
#define TLOSS 5 |
#define PLOSS 6 |
#endif /* ! defined (__STRICT_ANSI__) */ |
/* Useful constants. */ |
#if !defined(__STRICT_ANSI__) || ((_XOPEN_SOURCE - 0) >= 500) |
#define MAXFLOAT 3.40282347e+38F |
#define M_E 2.7182818284590452354 |
552,16 → 568,21 |
#define M_LN2 _M_LN2 |
#define M_LN10 2.30258509299404568402 |
#define M_PI 3.14159265358979323846 |
#define M_TWOPI (M_PI * 2.0) |
#define M_PI_2 1.57079632679489661923 |
#define M_PI_4 0.78539816339744830962 |
#define M_3PI_4 2.3561944901923448370E0 |
#define M_SQRTPI 1.77245385090551602792981 |
#define M_1_PI 0.31830988618379067154 |
#define M_2_PI 0.63661977236758134308 |
#define M_2_SQRTPI 1.12837916709551257390 |
#define M_SQRT2 1.41421356237309504880 |
#define M_SQRT1_2 0.70710678118654752440 |
#endif |
#ifndef __STRICT_ANSI__ |
#define M_TWOPI (M_PI * 2.0) |
#define M_3PI_4 2.3561944901923448370E0 |
#define M_SQRTPI 1.77245385090551602792981 |
#define M_LN2LO 1.9082149292705877000E-10 |
#define M_LN2HI 6.9314718036912381649E-1 |
#define M_SQRT3 1.73205080756887719000 |
/contrib/sdk/sources/newlib/libc/include/newlib.h |
---|
11,7 → 11,7 |
/* #undef _ELIX_LEVEL */ |
/* Newlib version */ |
#define _NEWLIB_VERSION "2.1.0" |
#define _NEWLIB_VERSION "2.3.0" |
/* C99 formats support (such as %a, %zu, ...) in IO functions like |
* printf/scanf enabled */ |
/contrib/sdk/sources/newlib/libc/include/pthread.h |
---|
15,7 → 15,7 |
* OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS |
* SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. |
* |
* $Id: pthread.h,v 1.12 2013/11/29 23:35:34 joel Exp $ |
* $Id$ |
*/ |
#ifndef __PTHREAD_h |
31,7 → 31,7 |
#include <sys/types.h> |
#include <time.h> |
#include <sys/sched.h> |
#include <sched.h> |
#include <sys/cdefs.h> |
struct _pthread_cleanup_context { |
/contrib/sdk/sources/newlib/libc/include/pwd.h |
---|
39,9 → 39,10 |
#endif |
#define _PWD_H_ |
#include <sys/cdefs.h> |
#include <sys/types.h> |
#ifndef _POSIX_SOURCE |
#if __BSD_VISIBLE |
#define _PATH_PASSWD "/etc/passwd" |
#define _PASSWORD_LEN 128 /* max length, not counting NULL */ |
61,16 → 62,24 |
#ifndef __INSIDE_CYGWIN__ |
struct passwd *getpwuid (uid_t); |
struct passwd *getpwnam (const char *); |
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 500 |
int getpwnam_r (const char *, struct passwd *, |
char *, size_t , struct passwd **); |
int getpwuid_r (uid_t, struct passwd *, char *, |
size_t, struct passwd **); |
#ifndef _POSIX_SOURCE |
#endif |
#if __XSI_VISIBLE >= 500 |
struct passwd *getpwent (void); |
void setpwent (void); |
void endpwent (void); |
#endif |
#if __BSD_VISIBLE |
int setpassent (int); |
#endif |
#endif /*!__INSIDE_CYGWIN__*/ |
#ifdef __cplusplus |
} |
/contrib/sdk/sources/newlib/libc/include/sched.h |
---|
14,7 → 14,7 |
* OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS |
* SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. |
* |
* $Id: sched.h,v 1.2 2010/04/01 18:33:33 jjohnstn Exp $ |
* $Id$ |
*/ |
#ifndef _SCHED_H_ |
/contrib/sdk/sources/newlib/libc/include/setjmp.h |
---|
11,7 → 11,12 |
_BEGIN_STD_C |
#ifdef __GNUC__ |
void _EXFUN(longjmp,(jmp_buf __jmpb, int __retval)) |
__attribute__ ((__noreturn__)); |
#else |
void _EXFUN(longjmp,(jmp_buf __jmpb, int __retval)); |
#endif |
int _EXFUN(setjmp,(jmp_buf __jmpb)); |
_END_STD_C |
/contrib/sdk/sources/newlib/libc/include/stdint.h |
---|
10,40 → 10,13 |
#define _STDINT_H |
#include <machine/_default_types.h> |
#include <sys/_intsup.h> |
#include <sys/_stdint.h> |
#ifdef __cplusplus |
extern "C" { |
#endif |
#if __GNUC_PREREQ (3, 2) |
/* gcc > 3.2 implicitly defines the values we are interested */ |
#define __STDINT_EXP(x) __##x##__ |
#else |
#define __STDINT_EXP(x) x |
#include <limits.h> |
#endif |
/* Check if "long long" is 64bit wide */ |
/* Modern GCCs provide __LONG_LONG_MAX__, SUSv3 wants LLONG_MAX */ |
#if ( defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff) ) \ |
|| ( defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff) ) |
#define __have_longlong64 1 |
#endif |
/* Check if "long" is 64bit or 32bit wide */ |
#if __STDINT_EXP(LONG_MAX) > 0x7fffffff |
#define __have_long64 1 |
#elif __STDINT_EXP(LONG_MAX) == 0x7fffffff && !defined(__SPU__) |
#define __have_long32 1 |
#define __have_long64 0 |
#endif |
#ifdef ___int8_t_defined |
typedef __int8_t int8_t ; |
typedef __uint8_t uint8_t ; |
#define __int8_t_defined 1 |
#endif |
#ifdef ___int_least8_t_defined |
typedef __int_least8_t int_least8_t; |
typedef __uint_least8_t uint_least8_t; |
50,12 → 23,6 |
#define __int_least8_t_defined 1 |
#endif |
#ifdef ___int16_t_defined |
typedef __int16_t int16_t ; |
typedef __uint16_t uint16_t ; |
#define __int16_t_defined 1 |
#endif |
#ifdef ___int_least16_t_defined |
typedef __int_least16_t int_least16_t; |
typedef __uint_least16_t uint_least16_t; |
62,12 → 29,6 |
#define __int_least16_t_defined 1 |
#endif |
#ifdef ___int32_t_defined |
typedef __int32_t int32_t ; |
typedef __uint32_t uint32_t ; |
#define __int32_t_defined 1 |
#endif |
#ifdef ___int_least32_t_defined |
typedef __int_least32_t int_least32_t; |
typedef __uint_least32_t uint_least32_t; |
74,12 → 35,6 |
#define __int_least32_t_defined 1 |
#endif |
#ifdef ___int64_t_defined |
typedef __int64_t int64_t ; |
typedef __uint64_t uint64_t ; |
#define __int64_t_defined 1 |
#endif |
#ifdef ___int_least64_t_defined |
typedef __int_least64_t int_least64_t; |
typedef __uint_least64_t uint_least64_t; |
188,18 → 143,15 |
typedef unsigned long uintmax_t; |
#endif |
typedef __intptr_t intptr_t; |
typedef __uintptr_t uintptr_t; |
#ifdef __INTPTR_TYPE__ |
#define INTPTR_MIN (-__INTPTR_MAX__ - 1) |
#define INTPTR_MAX __INTPTR_MAX__ |
#define UINTPTR_MAX __UINTPTR_MAX__ |
#define INTPTR_MAX (__INTPTR_MAX__) |
#define UINTPTR_MAX (__UINTPTR_MAX__) |
#elif defined(__PTRDIFF_TYPE__) |
#define INTPTR_MAX PTRDIFF_MAX |
#define INTPTR_MIN PTRDIFF_MIN |
#ifdef __UINTPTR_MAX__ |
#define UINTPTR_MAX __UINTPTR_MAX__ |
#define UINTPTR_MAX (__UINTPTR_MAX__) |
#else |
#define UINTPTR_MAX (2UL * PTRDIFF_MAX + 1) |
#endif |
208,7 → 160,7 |
* Fallback to hardcoded values, |
* should be valid on cpu's with 32bit int/32bit void* |
*/ |
#define INTPTR_MAX __STDINT_EXP(LONG_MAX) |
#define INTPTR_MAX (__STDINT_EXP(LONG_MAX)) |
#define INTPTR_MIN (-__STDINT_EXP(LONG_MAX) - 1) |
#define UINTPTR_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1) |
#endif |
217,22 → 169,22 |
#ifdef __INT8_MAX__ |
#define INT8_MIN (-__INT8_MAX__ - 1) |
#define INT8_MAX __INT8_MAX__ |
#define UINT8_MAX __UINT8_MAX__ |
#define INT8_MAX (__INT8_MAX__) |
#define UINT8_MAX (__UINT8_MAX__) |
#elif defined(__int8_t_defined) |
#define INT8_MIN -128 |
#define INT8_MAX 127 |
#define UINT8_MAX 255 |
#define INT8_MIN (-128) |
#define INT8_MAX (127) |
#define UINT8_MAX (255) |
#endif |
#ifdef __INT_LEAST8_MAX__ |
#define INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1) |
#define INT_LEAST8_MAX __INT_LEAST8_MAX__ |
#define UINT_LEAST8_MAX __UINT_LEAST8_MAX__ |
#define INT_LEAST8_MAX (__INT_LEAST8_MAX__) |
#define UINT_LEAST8_MAX (__UINT_LEAST8_MAX__) |
#elif defined(__int_least8_t_defined) |
#define INT_LEAST8_MIN -128 |
#define INT_LEAST8_MAX 127 |
#define UINT_LEAST8_MAX 255 |
#define INT_LEAST8_MIN (-128) |
#define INT_LEAST8_MAX (127) |
#define UINT_LEAST8_MAX (255) |
#else |
#error required type int_least8_t missing |
#endif |
239,22 → 191,22 |
#ifdef __INT16_MAX__ |
#define INT16_MIN (-__INT16_MAX__ - 1) |
#define INT16_MAX __INT16_MAX__ |
#define UINT16_MAX __UINT16_MAX__ |
#define INT16_MAX (__INT16_MAX__) |
#define UINT16_MAX (__UINT16_MAX__) |
#elif defined(__int16_t_defined) |
#define INT16_MIN -32768 |
#define INT16_MAX 32767 |
#define UINT16_MAX 65535 |
#define INT16_MIN (-32768) |
#define INT16_MAX (32767) |
#define UINT16_MAX (65535) |
#endif |
#ifdef __INT_LEAST16_MAX__ |
#define INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1) |
#define INT_LEAST16_MAX __INT_LEAST16_MAX__ |
#define UINT_LEAST16_MAX __UINT_LEAST16_MAX__ |
#define INT_LEAST16_MAX (__INT_LEAST16_MAX__) |
#define UINT_LEAST16_MAX (__UINT_LEAST16_MAX__) |
#elif defined(__int_least16_t_defined) |
#define INT_LEAST16_MIN -32768 |
#define INT_LEAST16_MAX 32767 |
#define UINT_LEAST16_MAX 65535 |
#define INT_LEAST16_MIN (-32768) |
#define INT_LEAST16_MAX (32767) |
#define UINT_LEAST16_MAX (65535) |
#else |
#error required type int_least16_t missing |
#endif |
261,33 → 213,33 |
#ifdef __INT32_MAX__ |
#define INT32_MIN (-__INT32_MAX__ - 1) |
#define INT32_MAX __INT32_MAX__ |
#define UINT32_MAX __UINT32_MAX__ |
#define INT32_MAX (__INT32_MAX__) |
#define UINT32_MAX (__UINT32_MAX__) |
#elif defined(__int32_t_defined) |
#if __have_long32 |
#if defined (_INT32_EQ_LONG) |
#define INT32_MIN (-2147483647L-1) |
#define INT32_MAX 2147483647L |
#define UINT32_MAX 4294967295UL |
#define INT32_MAX (2147483647L) |
#define UINT32_MAX (4294967295UL) |
#else |
#define INT32_MIN (-2147483647-1) |
#define INT32_MAX 2147483647 |
#define UINT32_MAX 4294967295U |
#define INT32_MAX (2147483647) |
#define UINT32_MAX (4294967295U) |
#endif |
#endif |
#ifdef __INT_LEAST32_MAX__ |
#define INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1) |
#define INT_LEAST32_MAX __INT_LEAST32_MAX__ |
#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__ |
#define INT_LEAST32_MAX (__INT_LEAST32_MAX__) |
#define UINT_LEAST32_MAX (__UINT_LEAST32_MAX__) |
#elif defined(__int_least32_t_defined) |
#if __have_long32 |
#if defined (_INT32_EQ_LONG) |
#define INT_LEAST32_MIN (-2147483647L-1) |
#define INT_LEAST32_MAX 2147483647L |
#define UINT_LEAST32_MAX 4294967295UL |
#define INT_LEAST32_MAX (2147483647L) |
#define UINT_LEAST32_MAX (4294967295UL) |
#else |
#define INT_LEAST32_MIN (-2147483647-1) |
#define INT_LEAST32_MAX 2147483647 |
#define UINT_LEAST32_MAX 4294967295U |
#define INT_LEAST32_MAX (2147483647) |
#define UINT_LEAST32_MAX (4294967295U) |
#endif |
#else |
#error required type int_least32_t missing |
295,44 → 247,44 |
#ifdef __INT64_MAX__ |
#define INT64_MIN (-__INT64_MAX__ - 1) |
#define INT64_MAX __INT64_MAX__ |
#define UINT64_MAX __UINT64_MAX__ |
#define INT64_MAX (__INT64_MAX__) |
#define UINT64_MAX (__UINT64_MAX__) |
#elif defined(__int64_t_defined) |
#if __have_long64 |
#define INT64_MIN (-9223372036854775807L-1L) |
#define INT64_MAX 9223372036854775807L |
#define UINT64_MAX 18446744073709551615U |
#define INT64_MAX (9223372036854775807L) |
#define UINT64_MAX (18446744073709551615U) |
#elif __have_longlong64 |
#define INT64_MIN (-9223372036854775807LL-1LL) |
#define INT64_MAX 9223372036854775807LL |
#define UINT64_MAX 18446744073709551615ULL |
#define INT64_MAX (9223372036854775807LL) |
#define UINT64_MAX (18446744073709551615ULL) |
#endif |
#endif |
#ifdef __INT_LEAST64_MAX__ |
#define INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1) |
#define INT_LEAST64_MAX __INT_LEAST64_MAX__ |
#define UINT_LEAST64_MAX __UINT_LEAST64_MAX__ |
#define INT_LEAST64_MAX (__INT_LEAST64_MAX__) |
#define UINT_LEAST64_MAX (__UINT_LEAST64_MAX__) |
#elif defined(__int_least64_t_defined) |
#if __have_long64 |
#define INT_LEAST64_MIN (-9223372036854775807L-1L) |
#define INT_LEAST64_MAX 9223372036854775807L |
#define UINT_LEAST64_MAX 18446744073709551615U |
#define INT_LEAST64_MAX (9223372036854775807L) |
#define UINT_LEAST64_MAX (18446744073709551615U) |
#elif __have_longlong64 |
#define INT_LEAST64_MIN (-9223372036854775807LL-1LL) |
#define INT_LEAST64_MAX 9223372036854775807LL |
#define UINT_LEAST64_MAX 18446744073709551615ULL |
#define INT_LEAST64_MAX (9223372036854775807LL) |
#define UINT_LEAST64_MAX (18446744073709551615ULL) |
#endif |
#endif |
#ifdef __INT_FAST8_MAX__ |
#define INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1) |
#define INT_FAST8_MAX __INT_FAST8_MAX__ |
#define UINT_FAST8_MAX __UINT_FAST8_MAX__ |
#define INT_FAST8_MAX (__INT_FAST8_MAX__) |
#define UINT_FAST8_MAX (__UINT_FAST8_MAX__) |
#elif defined(__int_fast8_t_defined) |
#if __STDINT_EXP(INT_MAX) >= 0x7f |
#define INT_FAST8_MIN (-__STDINT_EXP(INT_MAX)-1) |
#define INT_FAST8_MAX __STDINT_EXP(INT_MAX) |
#define INT_FAST8_MAX (__STDINT_EXP(INT_MAX)) |
#define UINT_FAST8_MAX (__STDINT_EXP(INT_MAX)*2U+1U) |
#else |
#define INT_FAST8_MIN INT_LEAST8_MIN |
343,12 → 295,12 |
#ifdef __INT_FAST16_MAX__ |
#define INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1) |
#define INT_FAST16_MAX __INT_FAST16_MAX__ |
#define UINT_FAST16_MAX __UINT_FAST16_MAX__ |
#define INT_FAST16_MAX (__INT_FAST16_MAX__) |
#define UINT_FAST16_MAX (__UINT_FAST16_MAX__) |
#elif defined(__int_fast16_t_defined) |
#if __STDINT_EXP(INT_MAX) >= 0x7fff |
#define INT_FAST16_MIN (-__STDINT_EXP(INT_MAX)-1) |
#define INT_FAST16_MAX __STDINT_EXP(INT_MAX) |
#define INT_FAST16_MAX (__STDINT_EXP(INT_MAX)) |
#define UINT_FAST16_MAX (__STDINT_EXP(INT_MAX)*2U+1U) |
#else |
#define INT_FAST16_MIN INT_LEAST16_MIN |
359,12 → 311,12 |
#ifdef __INT_FAST32_MAX__ |
#define INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1) |
#define INT_FAST32_MAX __INT_FAST32_MAX__ |
#define UINT_FAST32_MAX __UINT_FAST32_MAX__ |
#define INT_FAST32_MAX (__INT_FAST32_MAX__) |
#define UINT_FAST32_MAX (__UINT_FAST32_MAX__) |
#elif defined(__int_fast32_t_defined) |
#if __STDINT_EXP(INT_MAX) >= 0x7fffffff |
#define INT_FAST32_MIN (-__STDINT_EXP(INT_MAX)-1) |
#define INT_FAST32_MAX __STDINT_EXP(INT_MAX) |
#define INT_FAST32_MAX (__STDINT_EXP(INT_MAX)) |
#define UINT_FAST32_MAX (__STDINT_EXP(INT_MAX)*2U+1U) |
#else |
#define INT_FAST32_MIN INT_LEAST32_MIN |
375,12 → 327,12 |
#ifdef __INT_FAST64_MAX__ |
#define INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1) |
#define INT_FAST64_MAX __INT_FAST64_MAX__ |
#define UINT_FAST64_MAX __UINT_FAST64_MAX__ |
#define INT_FAST64_MAX (__INT_FAST64_MAX__) |
#define UINT_FAST64_MAX (__UINT_FAST64_MAX__) |
#elif defined(__int_fast64_t_defined) |
#if __STDINT_EXP(INT_MAX) > 0x7fffffff |
#define INT_FAST64_MIN (-__STDINT_EXP(INT_MAX)-1) |
#define INT_FAST64_MAX __STDINT_EXP(INT_MAX) |
#define INT_FAST64_MAX (__STDINT_EXP(INT_MAX)) |
#define UINT_FAST64_MAX (__STDINT_EXP(INT_MAX)*2U+1U) |
#else |
#define INT_FAST64_MIN INT_LEAST64_MIN |
390,7 → 342,7 |
#endif |
#ifdef __INTMAX_MAX__ |
#define INTMAX_MAX __INTMAX_MAX__ |
#define INTMAX_MAX (__INTMAX_MAX__) |
#define INTMAX_MIN (-INTMAX_MAX - 1) |
#elif defined(__INTMAX_TYPE__) |
/* All relevant GCC versions prefer long to long long for intmax_t. */ |
399,7 → 351,7 |
#endif |
#ifdef __UINTMAX_MAX__ |
#define UINTMAX_MAX __UINTMAX_MAX__ |
#define UINTMAX_MAX (__UINTMAX_MAX__) |
#elif defined(__UINTMAX_TYPE__) |
/* All relevant GCC versions prefer long to long long for intmax_t. */ |
#define UINTMAX_MAX UINT64_MAX |
407,7 → 359,7 |
/* This must match size_t in stddef.h, currently long unsigned int */ |
#ifdef __SIZE_MAX__ |
#define SIZE_MAX __SIZE_MAX__ |
#define SIZE_MAX (__SIZE_MAX__) |
#else |
#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1) |
#endif |
414,33 → 366,48 |
/* This must match sig_atomic_t in <signal.h> (currently int) */ |
#define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1) |
#define SIG_ATOMIC_MAX __STDINT_EXP(INT_MAX) |
#define SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX)) |
/* This must match ptrdiff_t in <stddef.h> (currently long int) */ |
#ifdef __PTRDIFF_MAX__ |
#define PTRDIFF_MAX __PTRDIFF_MAX__ |
#define PTRDIFF_MAX (__PTRDIFF_MAX__) |
#else |
#define PTRDIFF_MAX __STDINT_EXP(LONG_MAX) |
#define PTRDIFF_MAX (__STDINT_EXP(LONG_MAX)) |
#endif |
#define PTRDIFF_MIN (-PTRDIFF_MAX - 1) |
/* This must match definition in <wchar.h> */ |
#ifndef WCHAR_MIN |
#ifdef __WCHAR_MIN__ |
#define WCHAR_MIN (__WCHAR_MIN__) |
#elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0) |
#define WCHAR_MIN (0 + L'\0') |
#else |
#define WCHAR_MIN (-0x7fffffff - 1 + L'\0') |
#endif |
#endif |
/* This must match definition in <wchar.h> */ |
#ifndef WCHAR_MAX |
#ifdef __WCHAR_MAX__ |
#define WCHAR_MAX __WCHAR_MAX__ |
#define WCHAR_MAX (__WCHAR_MAX__) |
#elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0) |
#define WCHAR_MAX (0xffffffffu + L'\0') |
#else |
#define WCHAR_MAX (0x7fffffff + L'\0') |
#endif |
#ifdef __WCHAR_MIN__ |
#define WCHAR_MIN __WCHAR_MIN__ |
#endif |
/* wint_t is unsigned int on almost all GCC targets. */ |
#ifdef __WINT_MAX__ |
#define WINT_MAX __WINT_MAX__ |
#define WINT_MAX (__WINT_MAX__) |
#else |
#define WINT_MAX (__STDINT_EXP(INT_MAX) * 2U + 1U) |
#endif |
#ifdef __WINT_MIN__ |
#define WINT_MIN __WINT_MIN__ |
#define WINT_MIN (__WINT_MIN__) |
#else |
#define WINT_MIN 0U |
#define WINT_MIN (0U) |
#endif |
/** Macros for minimum-width integer constant expressions */ |
472,7 → 439,7 |
#define INT32_C(x) __INT32_C(x) |
#define UINT32_C(x) __UINT32_C(x) |
#else |
#if __have_long32 |
#if defined (_INT32_EQ_LONG) |
#define INT32_C(x) x##L |
#define UINT32_C(x) x##UL |
#else |
/contrib/sdk/sources/newlib/libc/include/stdio.h |
---|
32,6 → 32,7 |
#define __need_size_t |
#define __need_NULL |
#include <sys/cdefs.h> |
#include <stddef.h> |
#define __need___va_list |
48,7 → 49,10 |
_BEGIN_STD_C |
#if !defined(__FILE_defined) |
typedef __FILE FILE; |
# define __FILE_defined |
#endif |
#ifdef __CYGWIN__ |
typedef _fpos64_t fpos_t; |
82,6 → 86,7 |
#define __SL64 0x8000 /* is 64-bit offset large file */ |
/* _flags2 flags */ |
#define __SNLK 0x0001 /* stdio functions do not lock streams themselves */ |
#define __SWID 0x2000 /* true => stream orientation wide, false => byte, only valid if __SORD in _flags is true */ |
/* |
102,7 → 107,7 |
#ifdef __BUFSIZ__ |
#define BUFSIZ __BUFSIZ__ |
#else |
#define BUFSIZ 4096 |
#define BUFSIZ 1024 |
#endif |
#ifdef __FOPEN_MAX__ |
161,6 → 166,9 |
FILE * _EXFUN(tmpfile, (void)); |
char * _EXFUN(tmpnam, (char *)); |
#if __BSD_VISIBLE || __XSI_VISIBLE || __POSIX_VISIBLE >= 200112 |
char * _EXFUN(tempnam, (const char *, const char *)); |
#endif |
int _EXFUN(fclose, (FILE *)); |
int _EXFUN(fflush, (FILE *)); |
FILE * _EXFUN(freopen, (const char *__restrict, const char *__restrict, FILE *__restrict)); |
231,7 → 239,10 |
off_t _EXFUN(ftello, ( FILE *)); |
#endif |
#endif |
#if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) |
#if __GNU_VISIBLE |
int _EXFUN(fcloseall, (_VOID)); |
#endif |
#if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) || (__cplusplus >= 201103L) |
#ifndef _REENT_ONLY |
int _EXFUN(asiprintf, (char **, const char *, ...) |
_ATTRIBUTE ((__format__ (__printf__, 2, 3)))); |
245,7 → 256,6 |
int _EXFUN(diprintf, (int, const char *, ...) |
_ATTRIBUTE ((__format__ (__printf__, 2, 3)))); |
#endif |
int _EXFUN(fcloseall, (_VOID)); |
int _EXFUN(fiprintf, (FILE *, const char *, ...) |
_ATTRIBUTE ((__format__ (__printf__, 2, 3)))); |
int _EXFUN(fiscanf, (FILE *, const char *, ...) |
262,7 → 272,6 |
_ATTRIBUTE ((__format__ (__printf__, 3, 4)))); |
int _EXFUN(sniprintf, (char *, size_t, const char *, ...) |
_ATTRIBUTE ((__format__ (__printf__, 3, 4)))); |
char * _EXFUN(tempnam, (const char *, const char *)); |
int _EXFUN(vasiprintf, (char **, const char *, __VALIST) |
_ATTRIBUTE ((__format__ (__printf__, 2, 0)))); |
char * _EXFUN(vasniprintf, (char *, size_t *, const char *, __VALIST) |
336,7 → 345,7 |
/* getdelim - see __getdelim for now */ |
/* getline - see __getline for now */ |
FILE * _EXFUN(open_memstream, (char **, size_t *)); |
#if defined (__CYGWIN__) |
#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809 |
int _EXFUN(renameat, (int, const char *, int, const char *)); |
#endif |
int _EXFUN(vdprintf, (int, const char *__restrict, __VALIST) |
365,7 → 374,9 |
FILE * _EXFUN(_fdopen_r, (struct _reent *, int, const char *)); |
int _EXFUN(_fflush_r, (struct _reent *, FILE *)); |
int _EXFUN(_fgetc_r, (struct _reent *, FILE *)); |
int _EXFUN(_fgetc_unlocked_r, (struct _reent *, FILE *)); |
char * _EXFUN(_fgets_r, (struct _reent *, char *__restrict, int, FILE *__restrict)); |
char * _EXFUN(_fgets_unlocked_r, (struct _reent *, char *__restrict, int, FILE *__restrict)); |
#ifdef _COMPILING_NEWLIB |
int _EXFUN(_fgetpos_r, (struct _reent *, FILE *__restrict, _fpos_t *__restrict)); |
int _EXFUN(_fsetpos_r, (struct _reent *, FILE *, const _fpos_t *)); |
384,8 → 395,11 |
_ATTRIBUTE ((__format__ (__printf__, 3, 4)))); |
int _EXFUN(_fpurge_r, (struct _reent *, FILE *)); |
int _EXFUN(_fputc_r, (struct _reent *, int, FILE *)); |
int _EXFUN(_fputc_unlocked_r, (struct _reent *, int, FILE *)); |
int _EXFUN(_fputs_r, (struct _reent *, const char *__restrict, FILE *__restrict)); |
int _EXFUN(_fputs_unlocked_r, (struct _reent *, const char *__restrict, FILE *__restrict)); |
size_t _EXFUN(_fread_r, (struct _reent *, _PTR __restrict, size_t _size, size_t _n, FILE *__restrict)); |
size_t _EXFUN(_fread_unlocked_r, (struct _reent *, _PTR __restrict, size_t _size, size_t _n, FILE *__restrict)); |
int _EXFUN(_fscanf_r, (struct _reent *, FILE *__restrict, const char *__restrict, ...) |
_ATTRIBUTE ((__format__ (__scanf__, 3, 4)))); |
int _EXFUN(_fseek_r, (struct _reent *, FILE *, long, int)); |
394,6 → 408,7 |
_off_t _EXFUN(_ftello_r,(struct _reent *, FILE *)); |
void _EXFUN(_rewind_r, (struct _reent *, FILE *)); |
size_t _EXFUN(_fwrite_r, (struct _reent *, const _PTR __restrict, size_t _size, size_t _n, FILE *__restrict)); |
size_t _EXFUN(_fwrite_unlocked_r, (struct _reent *, const _PTR __restrict, size_t _size, size_t _n, FILE *__restrict)); |
int _EXFUN(_getc_r, (struct _reent *, FILE *)); |
int _EXFUN(_getc_unlocked_r, (struct _reent *, FILE *)); |
int _EXFUN(_getchar_r, (struct _reent *)); |
480,6 → 495,23 |
ssize_t _EXFUN(__getdelim, (char **, size_t *, int, FILE *)); |
ssize_t _EXFUN(__getline, (char **, size_t *, FILE *)); |
#if __BSD_VISIBLE |
void _EXFUN(clearerr_unlocked, (FILE *)); |
int _EXFUN(feof_unlocked, (FILE *)); |
int _EXFUN(ferror_unlocked, (FILE *)); |
int _EXFUN(fileno_unlocked, (FILE *)); |
int _EXFUN(fflush_unlocked, (FILE *)); |
int _EXFUN(fgetc_unlocked, (FILE *)); |
int _EXFUN(fputc_unlocked, (int, FILE *)); |
size_t _EXFUN(fread_unlocked, (_PTR __restrict, size_t _size, size_t _n, FILE *__restrict)); |
size_t _EXFUN(fwrite_unlocked, (const _PTR __restrict , size_t _size, size_t _n, FILE *)); |
#endif |
#if __GNU_VISIBLE |
char * _EXFUN(fgets_unlocked, (char *__restrict, int, FILE *__restrict)); |
int _EXFUN(fputs_unlocked, (const char *__restrict, FILE *__restrict)); |
#endif |
#ifdef __LARGE64_FILES |
#if !defined(__CYGWIN__) || defined(_COMPILING_NEWLIB) |
FILE * _EXFUN(fdopen64, (int, const char *)); |
644,8 → 676,8 |
#endif |
#endif |
#define __sfeof(p) (((p)->_flags & __SEOF) != 0) |
#define __sferror(p) (((p)->_flags & __SERR) != 0) |
#define __sfeof(p) ((int)(((p)->_flags & __SEOF) != 0)) |
#define __sferror(p) ((int)(((p)->_flags & __SERR) != 0)) |
#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF))) |
#define __sfileno(p) ((p)->_file) |
653,6 → 685,16 |
#define feof(p) __sfeof(p) |
#define ferror(p) __sferror(p) |
#define clearerr(p) __sclearerr(p) |
#if __BSD_VISIBLE |
#define feof_unlocked(p) __sfeof(p) |
#define ferror_unlocked(p) __sferror(p) |
#define clearerr_unlocked(p) __sclearerr(p) |
#endif /* __BSD_VISIBLE */ |
#endif /* _REENT_SMALL */ |
#if 0 /*ndef __STRICT_ANSI__ - FIXME: must initialize stdio first, use fn */ |
#define fileno(p) __sfileno(p) |
#endif |
#ifndef __CYGWIN__ |
678,6 → 720,11 |
#define getchar() getc(stdin) |
#define putchar(x) putc(x, stdout) |
#ifndef __STRICT_ANSI__ |
#define getchar_unlocked() getc_unlocked(stdin) |
#define putchar_unlocked(x) putc_unlocked(x, stdout) |
#endif |
_END_STD_C |
#endif /* _STDIO_H_ */ |
/contrib/sdk/sources/newlib/libc/include/stdio_ext.h |
---|
13,49 → 13,65 |
#include <stdio.h> |
#define FSETLOCKING_QUERY 0 |
#define FSETLOCKING_INTERNAL 1 |
#define FSETLOCKING_BYCALLER 2 |
_BEGIN_STD_C |
void _EXFUN(__fpurge,(FILE *)); |
int _EXFUN(__fsetlocking,(FILE *, int)); |
/* TODO: |
void _flushlbf (void); |
int __fsetlocking (FILE *__fp, int __type); |
*/ |
#ifdef __GNUC__ |
_ELIDABLE_INLINE inline size_t |
_ELIDABLE_INLINE size_t |
__fbufsize (FILE *__fp) { return (size_t) __fp->_bf._size; } |
_ELIDABLE_INLINE inline int |
_ELIDABLE_INLINE int |
__freading (FILE *__fp) { return (__fp->_flags & __SRD) != 0; } |
_ELIDABLE_INLINE inline int |
_ELIDABLE_INLINE int |
__fwriting (FILE *__fp) { return (__fp->_flags & __SWR) != 0; } |
_ELIDABLE_INLINE inline int |
_ELIDABLE_INLINE int |
__freadable (FILE *__fp) { return (__fp->_flags & (__SRD | __SRW)) != 0; } |
_ELIDABLE_INLINE inline int |
__fwriteable (FILE *__fp) { return (__fp->_flags & (__SWR | __SRW)) != 0; } |
_ELIDABLE_INLINE int |
__fwritable (FILE *__fp) { return (__fp->_flags & (__SWR | __SRW)) != 0; } |
_ELIDABLE_INLINE inline int |
_ELIDABLE_INLINE int |
__flbf (FILE *__fp) { return (__fp->_flags & __SLBF) != 0; } |
_ELIDABLE_INLINE inline size_t |
_ELIDABLE_INLINE size_t |
__fpending (FILE *__fp) { return __fp->_p - __fp->_bf._base; } |
#else |
size_t _EXFUN(__fbufsize,(FILE *)); |
int _EXFUN(__freading,(FILE *)); |
int _EXFUN(__fwriting,(FILE *)); |
int _EXFUN(__freadable,(FILE *)); |
int _EXFUN(__fwritable,(FILE *)); |
int _EXFUN(__flbf,(FILE *)); |
size_t _EXFUN(__fpending,(FILE *)); |
#ifndef __cplusplus |
#define __fbufsize(__fp) ((size_t) (__fp)->_bf._size) |
#define __freading(__fp) (((__fp)->_flags & __SRD) != 0) |
#define __fwriting(__fp) (((__fp)->_flags & __SWR) != 0) |
#define __freadable(__fp) (((__fp)->_flags & (__SRD | __SRW)) != 0) |
#define __fwriteable(__fp) (((__fp)->_flags & (__SWR | __SRW)) != 0) |
#define __fwritable(__fp) (((__fp)->_flags & (__SWR | __SRW)) != 0) |
#define __flbf(__fp) (((__fp)->_flags & __SLBF) != 0) |
#define __fpending(__fp) ((size_t) ((__fp)->_p - (__fp)->_bf._base)) |
#endif /* __cplusplus */ |
#endif /* __GNUC__ */ |
_END_STD_C |
/contrib/sdk/sources/newlib/libc/include/stdlib.h |
---|
16,6 → 16,7 |
#include <stddef.h> |
#include <sys/reent.h> |
#include <sys/cdefs.h> |
#include <machine/stdlib.h> |
#ifndef __STRICT_ANSI__ |
#include <alloca.h> |
63,7 → 64,7 |
#define MB_CUR_MAX __locale_mb_cur_max() |
_VOID _EXFUN(abort,(_VOID) _ATTRIBUTE ((noreturn))); |
_VOID _EXFUN(abort,(_VOID) _ATTRIBUTE ((__noreturn__))); |
int _EXFUN(abs,(int)); |
int _EXFUN(atexit,(_VOID (*__func)(_VOID))); |
double _EXFUN(atof,(const char *__nptr)); |
81,7 → 82,7 |
__compar_fn_t _compar)); |
_PTR _EXFUN_NOTHROW(calloc,(size_t __nmemb, size_t __size)); |
div_t _EXFUN(div,(int __numer, int __denom)); |
_VOID _EXFUN(exit,(int __status) _ATTRIBUTE ((noreturn))); |
_VOID _EXFUN(exit,(int __status) _ATTRIBUTE ((__noreturn__))); |
_VOID _EXFUN_NOTHROW(free,(_PTR)); |
char * _EXFUN(getenv,(const char *__string)); |
char * _EXFUN(_getenv_r,(struct _reent *, const char *__string)); |
111,7 → 112,7 |
int _EXFUN(mkostemps,(char *, int, int)); |
int _EXFUN(mkstemp,(char *)); |
int _EXFUN(mkstemps,(char *, int)); |
char * _EXFUN(mktemp,(char *) _ATTRIBUTE ((__warning__ ("the use of `mktemp' is dangerous; use `mkstemp' instead")))); |
char * _EXFUN(mktemp,(char *) _ATTRIBUTE ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead")))); |
#endif |
char * _EXFUN(_mkdtemp_r, (struct _reent *, char *)); |
int _EXFUN(_mkostemp_r, (struct _reent *, char *, int)); |
118,7 → 119,7 |
int _EXFUN(_mkostemps_r, (struct _reent *, char *, int, int)); |
int _EXFUN(_mkstemp_r, (struct _reent *, char *)); |
int _EXFUN(_mkstemps_r, (struct _reent *, char *, int)); |
char * _EXFUN(_mktemp_r, (struct _reent *, char *) _ATTRIBUTE ((__warning__ ("the use of `mktemp' is dangerous; use `mkstemp' instead")))); |
char * _EXFUN(_mktemp_r, (struct _reent *, char *) _ATTRIBUTE ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead")))); |
#endif |
_VOID _EXFUN(qsort,(_PTR __base, size_t __nmemb, size_t __size, __compar_fn_t _compar)); |
int _EXFUN(rand,(_VOID)); |
126,11 → 127,14 |
#ifndef __STRICT_ANSI__ |
_PTR _EXFUN(reallocf,(_PTR __r, size_t __size)); |
char * _EXFUN(realpath, (const char *__restrict path, char *__restrict resolved_path)); |
int _EXFUN(rpmatch, (const char *response)); |
#endif |
_VOID _EXFUN(srand,(unsigned __seed)); |
double _EXFUN(strtod,(const char *__restrict __n, char **__restrict __end_PTR)); |
double _EXFUN(_strtod_r,(struct _reent *,const char *__restrict __n, char **__restrict __end_PTR)); |
#if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) || (__cplusplus >= 201103L) |
#if !defined(__STRICT_ANSI__) || \ |
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ |
(defined(__cplusplus) && __cplusplus >= 201103L) |
float _EXFUN(strtof,(const char *__restrict __n, char **__restrict __end_PTR)); |
#endif |
#ifndef __STRICT_ANSI__ |
151,7 → 155,13 |
char * _EXFUN(l64a,(long __input)); |
char * _EXFUN(_l64a_r,(struct _reent *,long __input)); |
int _EXFUN(on_exit,(_VOID (*__func)(int, _PTR),_PTR __arg)); |
_VOID _EXFUN(_Exit,(int __status) _ATTRIBUTE ((noreturn))); |
#endif /* ! __STRICT_ANSI__ */ |
#if !defined(__STRICT_ANSI__) || \ |
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ |
(defined(__cplusplus) && __cplusplus >= 201103L) |
_VOID _EXFUN(_Exit,(int __status) _ATTRIBUTE ((__noreturn__))); |
#endif |
#ifndef __STRICT_ANSI__ |
int _EXFUN(putenv,(char *__string)); |
int _EXFUN(_putenv_r,(struct _reent *, char *__string)); |
_PTR _EXFUN(_reallocf_r,(struct _reent *, _PTR, size_t)); |
167,6 → 177,12 |
char * _EXFUN(fcvtbuf,(double, int, int*, int*, char *)); |
char * _EXFUN(ecvtf,(float,int,int *,int *)); |
char * _EXFUN(dtoa,(double, int, int, int *, int*, char**)); |
#endif |
char * _EXFUN(__itoa,(int, char *, int)); |
char * _EXFUN(__utoa,(unsigned, char *, int)); |
#ifndef __STRICT_ANSI__ |
char * _EXFUN(itoa,(int, char *, int)); |
char * _EXFUN(utoa,(unsigned, char *, int)); |
int _EXFUN(rand_r,(unsigned *__seed)); |
double _EXFUN(drand48,(_VOID)); |
189,18 → 205,28 |
_EXFUN(_seed48_r,(struct _reent *, unsigned short [3])); |
_VOID _EXFUN(srand48,(long)); |
_VOID _EXFUN(_srand48_r,(struct _reent *, long)); |
#endif /* ! __STRICT_ANSI__ */ |
#if !defined(__STRICT_ANSI__) || \ |
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ |
(defined(__cplusplus) && __cplusplus >= 201103L) |
long long _EXFUN(atoll,(const char *__nptr)); |
#endif |
#ifndef __STRICT_ANSI__ |
long long _EXFUN(_atoll_r,(struct _reent *, const char *__nptr)); |
#endif /* ! __STRICT_ANSI__ */ |
#if !defined(__STRICT_ANSI__) || \ |
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ |
(defined(__cplusplus) && __cplusplus >= 201103L) |
long long _EXFUN(llabs,(long long)); |
lldiv_t _EXFUN(lldiv,(long long __numer, long long __denom)); |
#endif /* ! __STRICT_ANSI__ */ |
#if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) || (__cplusplus >= 201103L) |
long long _EXFUN(strtoll,(const char *__restrict __n, char **__restrict __end_PTR, int __base)); |
#endif |
#ifndef __STRICT_ANSI__ |
long long _EXFUN(_strtoll_r,(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base)); |
#endif /* ! __STRICT_ANSI__ */ |
#if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) || (__cplusplus >= 201103L) |
#if !defined(__STRICT_ANSI__) || \ |
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ |
(defined(__cplusplus) && __cplusplus >= 201103L) |
unsigned long long _EXFUN(strtoull,(const char *__restrict __n, char **__restrict __end_PTR, int __base)); |
#endif |
#ifndef __STRICT_ANSI__ |
230,13 → 256,43 |
_VOID _EXFUN(__eprintf,(const char *, const char *, unsigned int, const char *)); |
/* There are two common qsort_r variants. If you request |
_BSD_SOURCE, you get the BSD version; otherwise you get the GNU |
version. We want that #undef qsort_r will still let you |
invoke the underlying function, but that requires gcc support. */ |
#ifdef _BSD_SOURCE |
# ifdef __GNUC__ |
_VOID _EXFUN(qsort_r,(_PTR __base, size_t __nmemb, size_t __size, _PTR __thunk, int (*_compar)(_PTR, const _PTR, const _PTR))) |
__asm__ (__ASMNAME ("__bsd_qsort_r")); |
# else |
_VOID _EXFUN(__bsd_qsort_r,(_PTR __base, size_t __nmemb, size_t __size, _PTR __thunk, int (*_compar)(_PTR, const _PTR, const _PTR))); |
# define qsort_r __bsd_qsort_r |
# endif |
#elif __GNU_VISIBLE |
_VOID _EXFUN(qsort_r,(_PTR __base, size_t __nmemb, size_t __size, int (*_compar)(const _PTR, const _PTR, _PTR), _PTR __thunk)); |
#endif |
/* On platforms where long double equals double. */ |
#ifdef _LDBL_EQ_DBL |
#if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) || (__cplusplus >= 201103L) |
#ifdef _HAVE_LONG_DOUBLE |
extern long double _strtold_r (struct _reent *, const char *__restrict, char **__restrict); |
#if !defined(__STRICT_ANSI__) || \ |
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ |
(defined(__cplusplus) && __cplusplus >= 201103L) |
extern long double strtold (const char *__restrict, char **__restrict); |
#endif |
#endif /* _LDBL_EQ_DBL */ |
#endif /* _HAVE_LONG_DOUBLE */ |
/* |
* If we're in a mode greater than C99, expose C11 functions. |
*/ |
#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L |
void * aligned_alloc(size_t, size_t) __malloc_like __alloc_align(1) |
__alloc_size(2); |
int at_quick_exit(void (*)(void)); |
_Noreturn void |
quick_exit(int); |
#endif /* __ISO_C_VISIBLE >= 2011 */ |
_END_STD_C |
#endif /* _STDLIB_H_ */ |
/contrib/sdk/sources/newlib/libc/include/string.h |
---|
38,75 → 38,117 |
char *_EXFUN(strrchr,(const char *, int)); |
size_t _EXFUN(strspn,(const char *, const char *)); |
char *_EXFUN(strstr,(const char *, const char *)); |
#ifndef _REENT_ONLY |
char *_EXFUN(strtok,(char *__restrict, const char *__restrict)); |
#endif |
size_t _EXFUN(strxfrm,(char *__restrict, const char *__restrict, size_t)); |
#ifndef __STRICT_ANSI__ |
#if __POSIX_VISIBLE |
char *_EXFUN(strtok_r,(char *__restrict, const char *__restrict, char **__restrict)); |
#endif |
#if __BSD_VISIBLE |
int _EXFUN(bcmp,(const void *, const void *, size_t)); |
void _EXFUN(bcopy,(const void *, void *, size_t)); |
void _EXFUN(bzero,(void *, size_t)); |
int _EXFUN(ffs,(int)); |
char *_EXFUN(index,(const char *, int)); |
#endif |
#if __BSD_VISIBLE || __XSI_VISIBLE |
_PTR _EXFUN(memccpy,(_PTR __restrict, const _PTR __restrict, int, size_t)); |
#endif |
#if __GNU_VISIBLE |
_PTR _EXFUN(mempcpy,(_PTR, const _PTR, size_t)); |
_PTR _EXFUN(memmem, (const _PTR, size_t, const _PTR, size_t)); |
#endif |
_PTR _EXFUN(memrchr,(const _PTR, int, size_t)); |
#if __GNU_VISIBLE |
_PTR _EXFUN(rawmemchr,(const _PTR, int)); |
#endif |
#if __BSD_VISIBLE |
char *_EXFUN(rindex,(const char *, int)); |
#endif |
char *_EXFUN(stpcpy,(char *__restrict, const char *__restrict)); |
char *_EXFUN(stpncpy,(char *__restrict, const char *__restrict, size_t)); |
#if __BSD_VISIBLE || __POSIX_VISIBLE |
int _EXFUN(strcasecmp,(const char *, const char *)); |
#endif |
#if __GNU_VISIBLE |
char *_EXFUN(strcasestr,(const char *, const char *)); |
char *_EXFUN(strchrnul,(const char *, int)); |
#endif |
#if !defined(__STRICT_ANSI__) || (_XOPEN_SOURCE - 0) >= 500 |
#if __XSI_VISIBLE >= 500 |
char *_EXFUN(strdup,(const char *)); |
#endif |
#ifndef __STRICT_ANSI__ |
char *_EXFUN(_strdup_r,(struct _reent *, const char *)); |
#endif |
#if !defined(__STRICT_ANSI__) || (_XOPEN_SOURCE - 0) >= 700 |
#if __XSI_VISIBLE >= 700 |
char *_EXFUN(strndup,(const char *, size_t)); |
#endif |
#ifndef __STRICT_ANSI__ |
char *_EXFUN(_strndup_r,(struct _reent *, const char *, size_t)); |
#endif |
#if __GNU_VISIBLE |
int _EXFUN(ffsl,(long)); |
int _EXFUN(ffsll, (long long)); |
#endif |
/* There are two common strerror_r variants. If you request |
_GNU_SOURCE, you get the GNU version; otherwise you get the POSIX |
version. POSIX requires that #undef strerror_r will still let you |
invoke the underlying function, but that requires gcc support. */ |
#ifdef _GNU_SOURCE |
#if __GNU_VISIBLE |
char *_EXFUN(strerror_r,(int, char *, size_t)); |
#else |
# ifdef __GNUC__ |
int _EXFUN(strerror_r,(int, char *, size_t)) __asm__ (__ASMNAME ("__xpg_strerror_r")); |
int _EXFUN(strerror_r,(int, char *, size_t)) |
#ifdef __ASMNAME |
__asm__ (__ASMNAME ("__xpg_strerror_r")) |
#endif |
; |
# else |
int _EXFUN(__xpg_strerror_r,(int, char *, size_t)); |
# define strerror_r __xpg_strerror_r |
# endif |
#endif |
/* Reentrant version of strerror. */ |
char * _EXFUN(_strerror_r, (struct _reent *, int, int, int *)); |
#if __BSD_VISIBLE |
size_t _EXFUN(strlcat,(char *, const char *, size_t)); |
size_t _EXFUN(strlcpy,(char *, const char *, size_t)); |
#endif |
#if __BSD_VISIBLE || __POSIX_VISIBLE |
int _EXFUN(strncasecmp,(const char *, const char *, size_t)); |
#endif |
#if !defined(__STRICT_ANSI__) || __POSIX_VISIBLE >= 200809 || \ |
__XSI_VISIBLE >= 700 |
size_t _EXFUN(strnlen,(const char *, size_t)); |
#endif |
#if __BSD_VISIBLE |
char *_EXFUN(strsep,(char **, const char *)); |
#endif |
/* |
* The origin of these is unknown to me so I am conditionalizing them |
* on __STRICT_ANSI__. Finetuning this is definitely needed. --joel |
*/ |
#if !defined(__STRICT_ANSI__) |
char *_EXFUN(strlwr,(char *)); |
char *_EXFUN(strupr,(char *)); |
#endif |
#ifndef DEFS_H /* Kludge to work around problem compiling in gdb */ |
char *_EXFUN(strsignal, (int __signo)); |
#endif |
#ifdef __CYGWIN__ |
int _EXFUN(strtosigno, (const char *__name)); |
#endif |
/* Recursive version of strerror. */ |
char * _EXFUN(_strerror_r, (struct _reent *, int, int, int *)); |
#if defined _GNU_SOURCE && defined __GNUC__ |
#define strdupa(__s) \ |
(__extension__ ({const char *__in = (__s); \ |
121,22 → 163,22 |
(char *) memcpy (__out, __in, __len-1);})) |
#endif /* _GNU_SOURCE && __GNUC__ */ |
/* These function names are used on Windows and perhaps other systems. */ |
#ifndef strcmpi |
#define strcmpi strcasecmp |
/* There are two common basename variants. If you do NOT #include <libgen.h> |
and you do |
#define _GNU_SOURCE |
#include <string.h> |
you get the GNU version. Otherwise you get the POSIX versionfor which you |
should #include <libgen.h>i for the function prototype. POSIX requires that |
#undef basename will still let you invoke the underlying function. However, |
this also implies that the POSIX version is used in this case. That's made |
sure here. */ |
#if __GNU_VISIBLE && !defined(basename) |
# define basename basename |
char *_EXFUN(__nonnull (1) basename,(const char *)) __asm__(__ASMNAME("__gnu_basename")); |
#endif |
#ifndef stricmp |
#define stricmp strcasecmp |
#endif |
#ifndef strncmpi |
#define strncmpi strncasecmp |
#endif |
#ifndef strnicmp |
#define strnicmp strncasecmp |
#endif |
#endif /* ! __STRICT_ANSI__ */ |
#include <sys/string.h> |
_END_STD_C |
/contrib/sdk/sources/newlib/libc/include/sys/_default_fcntl.h |
---|
5,6 → 5,7 |
#endif |
#define _SYS__DEFAULT_FCNTL_H_ |
#include <_ansi.h> |
#include <sys/cdefs.h> |
#define _FOPEN (-1) /* from sys/file.h, kernel use only */ |
#define _FREAD 0x0001 /* read enabled */ |
#define _FWRITE 0x0002 /* write enabled */ |
134,7 → 135,7 |
#define F_UNLKSYS 4 /* remove remote locks for a given system */ |
#endif /* !_POSIX_SOURCE */ |
#ifdef __CYGWIN__ |
#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809 || defined(__CYGWIN__) |
/* Special descriptor value to denote the cwd in calls to openat(2) etc. */ |
#define AT_FDCWD -2 |
145,6 → 146,14 |
#define AT_REMOVEDIR 8 |
#endif |
#if __BSD_VISIBLE |
/* lock operations for flock(2) */ |
#define LOCK_SH 0x01 /* shared file lock */ |
#define LOCK_EX 0x02 /* exclusive file lock */ |
#define LOCK_NB 0x04 /* don't block when locking */ |
#define LOCK_UN 0x08 /* unlock file */ |
#endif |
/*#include <sys/stdtypes.h>*/ |
#ifndef __CYGWIN__ |
173,17 → 182,21 |
}; |
#endif /* !_POSIX_SOURCE */ |
#include <sys/types.h> |
#include <sys/stat.h> /* sigh. for the mode bits for open/creat */ |
extern int open _PARAMS ((const char *, int, ...)); |
#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809 || defined(__CYGWIN__) |
extern int openat _PARAMS ((int, const char *, int, ...)); |
#endif |
extern int creat _PARAMS ((const char *, mode_t)); |
extern int fcntl _PARAMS ((int, int, ...)); |
#if __BSD_VISIBLE |
extern int flock _PARAMS ((int, int)); |
#endif |
#ifdef __CYGWIN__ |
#include <sys/time.h> |
extern int futimesat _PARAMS ((int, const char *, const struct timeval *)); |
extern int openat _PARAMS ((int, const char *, int, ...)); |
#endif |
/* Provide _<systemcall> prototypes for functions provided by some versions |
/contrib/sdk/sources/newlib/libc/include/sys/_intsup.h |
---|
0,0 → 1,209 |
/* |
* Copyright (c) 2004, 2005 by |
* Ralf Corsepius, Ulm/Germany. All rights reserved. |
* |
* Permission to use, copy, modify, and distribute this software |
* is freely granted, provided that this notice is preserved. |
*/ |
#ifndef _SYS__INTSUP_H |
#define _SYS__INTSUP_H |
#include <sys/features.h> |
#if __GNUC_PREREQ (3, 2) |
/* gcc > 3.2 implicitly defines the values we are interested */ |
#define __STDINT_EXP(x) __##x##__ |
#else |
#define __STDINT_EXP(x) x |
#include <limits.h> |
#endif |
/* Check if "long long" is 64bit wide */ |
/* Modern GCCs provide __LONG_LONG_MAX__, SUSv3 wants LLONG_MAX */ |
#if ( defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff) ) \ |
|| ( defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff) ) |
#define __have_longlong64 1 |
#endif |
/* Check if "long" is 64bit or 32bit wide */ |
#if __STDINT_EXP(LONG_MAX) > 0x7fffffff |
#define __have_long64 1 |
#elif __STDINT_EXP(LONG_MAX) == 0x7fffffff && !defined(__SPU__) |
#define __have_long32 1 |
#endif |
/* Determine how intptr_t and intN_t fastN_t and leastN_t are defined by gcc |
for this target. This is used to determine the correct printf() constant in |
inttypes.h and other constants in stdint.h. |
So we end up with |
?(signed|unsigned) char == 0 |
?(signed|unsigned) short == 1 |
?(signed|unsigned) int == 2 |
?(signed|unsigned) short int == 3 |
?(signed|unsigned) long == 4 |
?(signed|unsigned) long int == 6 |
?(signed|unsigned) long long == 8 |
?(signed|unsigned) long long int == 10 |
*/ |
#pragma push_macro("signed") |
#pragma push_macro("unsigned") |
#pragma push_macro("char") |
#pragma push_macro("short") |
#pragma push_macro("__int20") |
#pragma push_macro("int") |
#pragma push_macro("long") |
#undef signed |
#undef unsigned |
#undef char |
#undef short |
#undef int |
#undef __int20 |
#undef long |
#define signed +0 |
#define unsigned +0 |
#define char +0 |
#define short +1 |
#define __int20 +2 |
#define int +2 |
#define long +4 |
#if (__INTPTR_TYPE__ == 8 || __INTPTR_TYPE__ == 10) |
#define _INTPTR_EQ_LONGLONG |
#elif (__INTPTR_TYPE__ == 4 || __INTPTR_TYPE__ == 6) |
#define _INTPTR_EQ_LONG |
/* Note - the tests for _INTPTR_EQ_INT and _INTPTR_EQ_SHORT are currently |
redundant as the values are not used. But one day they may be needed |
and so the tests remain. */ |
#elif __INTPTR_TYPE__ == 2 |
#define _INTPTR_EQ_INT |
#elif (__INTPTR_TYPE__ == 1 || __INTPTR_TYPE__ == 3) |
#define _INTPTR_EQ_SHORT |
#else |
#error "Unable to determine type definition of intptr_t" |
#endif |
#if (__INT32_TYPE__ == 4 || __INT32_TYPE__ == 6) |
#define _INT32_EQ_LONG |
#elif __INT32_TYPE__ == 2 |
/* Nothing to define because int32_t is safe to print as an int. */ |
#else |
#error "Unable to determine type definition of int32_t" |
#endif |
#if (__INT8_TYPE__ == 0) |
#define __INT8 "hh" |
#elif (__INT8_TYPE__ == 1 || __INT8_TYPE__ == 3) |
#define __INT8 "h" |
#elif (__INT8_TYPE__ == 2) |
#define __INT8 |
#elif (__INT8_TYPE__ == 4 || __INT8_TYPE__ == 6) |
#define __INT8 "l" |
#elif (__INT8_TYPE__ == 8 || __INT8_TYPE__ == 10) |
#define __INT8 "ll" |
#endif |
#if (__INT16_TYPE__ == 1 || __INT16_TYPE__ == 3) |
#define __INT16 "h" |
#elif (__INT16_TYPE__ == 2) |
#define __INT16 |
#elif (__INT16_TYPE__ == 4 || __INT16_TYPE__ == 6) |
#define __INT16 "l" |
#elif (__INT16_TYPE__ == 8 || __INT16_TYPE__ == 10) |
#define __INT16 "ll" |
#endif |
#if (__INT32_TYPE__ == 2) |
#define __INT32 |
#elif (__INT32_TYPE__ == 4 || __INT32_TYPE__ == 6) |
#define __INT32 "l" |
#elif (__INT32_TYPE__ == 8 || __INT32_TYPE__ == 10) |
#define __INT32 "ll" |
#endif |
#if (__INT64_TYPE__ == 2) |
#define __INT64 |
#elif (__INT64_TYPE__ == 4 || __INT64_TYPE__ == 6) |
#define __INT64 "l" |
#elif (__INT64_TYPE__ == 8 || __INT64_TYPE__ == 10) |
#define __INT64 "ll" |
#endif |
#if (__INT_FAST8_TYPE__ == 0) |
#define __FAST8 "hh" |
#elif (__INT_FAST8_TYPE__ == 1 || __INT_FAST8_TYPE__ == 3) |
#define __FAST8 "h" |
#elif (__INT_FAST8_TYPE__ == 2) |
#define __FAST8 |
#elif (__INT_FAST8_TYPE__ == 4 || __INT_FAST8_TYPE__ == 6) |
#define __FAST8 "l" |
#elif (__INT_FAST8_TYPE__ == 8 || __INT_FAST8_TYPE__ == 10) |
#define __FAST8 "ll" |
#endif |
#if (__INT_FAST16_TYPE__ == 1 || __INT_FAST16_TYPE__ == 3) |
#define __FAST16 "h" |
#elif (__INT_FAST16_TYPE__ == 2) |
#define __FAST16 |
#elif (__INT_FAST16_TYPE__ == 4 || __INT_FAST16_TYPE__ == 6) |
#define __FAST16 "l" |
#elif (__INT_FAST16_TYPE__ == 8 || __INT_FAST16_TYPE__ == 10) |
#define __FAST16 "ll" |
#endif |
#if (__INT_FAST32_TYPE__ == 2) |
#define __FAST32 |
#elif (__INT_FAST32_TYPE__ == 4 || __INT_FAST32_TYPE__ == 6) |
#define __FAST32 "l" |
#elif (__INT_FAST32_TYPE__ == 8 || __INT_FAST32_TYPE__ == 10) |
#define __FAST32 "ll" |
#endif |
#if (__INT_FAST64_TYPE__ == 2) |
#define __FAST64 |
#elif (__INT_FAST64_TYPE__ == 4 || __INT_FAST64_TYPE__ == 6) |
#define __FAST64 "l" |
#elif (__INT_FAST64_TYPE__ == 8 || __INT_FAST64_TYPE__ == 10) |
#define __FAST64 "ll" |
#endif |
#if (__INT_LEAST8_TYPE__ == 0) |
#define __LEAST8 "hh" |
#elif (__INT_LEAST8_TYPE__ == 1 || __INT_LEAST8_TYPE__ == 3) |
#define __LEAST8 "h" |
#elif (__INT_LEAST8_TYPE__ == 2) |
#define __LEAST8 |
#elif (__INT_LEAST8_TYPE__ == 4 || __INT_LEAST8_TYPE__ == 6) |
#define __LEAST8 "l" |
#elif (__INT_LEAST8_TYPE__ == 8 || __INT_LEAST8_TYPE__ == 10) |
#define __LEAST8 "ll" |
#endif |
#if (__INT_LEAST16_TYPE__ == 1 || __INT_LEAST16_TYPE__ == 3) |
#define __LEAST16 "h" |
#elif (__INT_LEAST16_TYPE__ == 2) |
#define __LEAST16 |
#elif (__INT_LEAST16_TYPE__ == 4 || __INT_LEAST16_TYPE__ == 6) |
#define __LEAST16 "l" |
#elif (__INT_LEAST16_TYPE__ == 8 || __INT_LEAST16_TYPE__ == 10) |
#define __LEAST16 "ll" |
#endif |
#if (__INT_LEAST32_TYPE__ == 2) |
#define __LEAST32 |
#elif (__INT_LEAST32_TYPE__ == 4 || __INT_LEAST32_TYPE__ == 6) |
#define __LEAST32 "l" |
#elif (__INT_LEAST32_TYPE__ == 8 || __INT_LEAST32_TYPE__ == 10) |
#define __LEAST32 "ll" |
#endif |
#if (__INT_LEAST64_TYPE__ == 2) |
#define __LEAST64 |
#elif (__INT_LEAST64_TYPE__ == 4 || __INT_LEAST64_TYPE__ == 6) |
#define __LEAST64 "l" |
#elif (__INT_LEAST64_TYPE__ == 8 || __INT_LEAST64_TYPE__ == 10) |
#define __LEAST64 "ll" |
#endif |
#undef signed |
#undef unsigned |
#undef char |
#undef short |
#undef int |
#undef long |
#pragma pop_macro("signed") |
#pragma pop_macro("unsigned") |
#pragma pop_macro("char") |
#pragma pop_macro("short") |
#pragma pop_macro("__int20") |
#pragma pop_macro("int") |
#pragma pop_macro("long") |
#endif /* _SYS__INTSUP_H */ |
/contrib/sdk/sources/newlib/libc/include/sys/_sigset.h |
---|
0,0 → 1,43 |
/*- |
* Copyright (c) 1982, 1986, 1989, 1991, 1993 |
* The Regents of the University of California. All rights reserved. |
* (c) UNIX System Laboratories, Inc. |
* All or some portions of this file are derived from material licensed |
* to the University of California by American Telephone and Telegraph |
* Co. or Unix System Laboratories, Inc. and are reproduced herein with |
* the permission of UNIX System Laboratories, Inc. |
* |
* 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. |
* 4. 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. |
* |
* @(#)signal.h 8.4 (Berkeley) 5/4/95 |
* $FreeBSD$ |
*/ |
#ifndef _SYS__SIGSET_H_ |
#define _SYS__SIGSET_H_ |
typedef unsigned long __sigset_t; |
#endif /* !_SYS__SIGSET_H_ */ |
/contrib/sdk/sources/newlib/libc/include/sys/_stdint.h |
---|
0,0 → 1,49 |
/* |
* Copyright (c) 2004, 2005 by |
* Ralf Corsepius, Ulm/Germany. All rights reserved. |
* |
* Permission to use, copy, modify, and distribute this software |
* is freely granted, provided that this notice is preserved. |
*/ |
#ifndef _SYS__STDINT_H |
#define _SYS__STDINT_H |
#include <machine/_default_types.h> |
#ifdef __cplusplus |
extern "C" { |
#endif |
#ifdef ___int8_t_defined |
typedef __int8_t int8_t ; |
typedef __uint8_t uint8_t ; |
#define __int8_t_defined 1 |
#endif |
#ifdef ___int16_t_defined |
typedef __int16_t int16_t ; |
typedef __uint16_t uint16_t ; |
#define __int16_t_defined 1 |
#endif |
#ifdef ___int32_t_defined |
typedef __int32_t int32_t ; |
typedef __uint32_t uint32_t ; |
#define __int32_t_defined 1 |
#endif |
#ifdef ___int64_t_defined |
typedef __int64_t int64_t ; |
typedef __uint64_t uint64_t ; |
#define __int64_t_defined 1 |
#endif |
typedef __intptr_t intptr_t; |
typedef __uintptr_t uintptr_t; |
#ifdef __cplusplus |
} |
#endif |
#endif /* _SYS__STDINT_H */ |
/contrib/sdk/sources/newlib/libc/include/sys/_timespec.h |
---|
0,0 → 1,49 |
/*- |
* Copyright (c) 1982, 1986, 1993 |
* The Regents of the University of California. All rights reserved. |
* |
* 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. |
* 4. 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. |
* |
* @(#)time.h 8.5 (Berkeley) 5/4/95 |
* from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp |
* $FreeBSD$ |
*/ |
#ifndef _SYS__TIMESPEC_H_ |
#define _SYS__TIMESPEC_H_ |
#include <machine/types.h> |
#ifndef __time_t_defined |
typedef _TIME_T_ time_t; |
#define __time_t_defined |
#endif |
struct timespec { |
time_t tv_sec; /* seconds */ |
long tv_nsec; /* and nanoseconds */ |
}; |
#endif /* !_SYS__TIMESPEC_H_ */ |
/contrib/sdk/sources/newlib/libc/include/sys/_timeval.h |
---|
0,0 → 1,88 |
/*- |
* Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org> |
* All rights reserved. |
* |
* 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. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. |
* |
* $FreeBSD$ |
*/ |
#ifndef _SYS__TIMEVAL_H_ |
#define _SYS__TIMEVAL_H_ |
#include <machine/types.h> |
#ifndef _SUSECONDS_T_DECLARED |
typedef __suseconds_t suseconds_t; |
#define _SUSECONDS_T_DECLARED |
#endif |
#ifndef __time_t_defined |
typedef _TIME_T_ time_t; |
#define __time_t_defined |
#endif |
/* This define is also used outside of Newlib, e.g. in MinGW-w64 */ |
#ifndef _TIMEVAL_DEFINED |
#define _TIMEVAL_DEFINED |
/* |
* Structure returned by gettimeofday(2) system call, and used in other calls. |
*/ |
struct timeval { |
time_t tv_sec; /* seconds */ |
suseconds_t tv_usec; /* and microseconds */ |
}; |
#if __BSD_VISIBLE |
#ifndef _KERNEL /* NetBSD/OpenBSD compatible interfaces */ |
#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) |
#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) |
#define timercmp(tvp, uvp, cmp) \ |
(((tvp)->tv_sec == (uvp)->tv_sec) ? \ |
((tvp)->tv_usec cmp (uvp)->tv_usec) : \ |
((tvp)->tv_sec cmp (uvp)->tv_sec)) |
#define timeradd(tvp, uvp, vvp) \ |
do { \ |
(vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \ |
(vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \ |
if ((vvp)->tv_usec >= 1000000) { \ |
(vvp)->tv_sec++; \ |
(vvp)->tv_usec -= 1000000; \ |
} \ |
} while (0) |
#define timersub(tvp, uvp, vvp) \ |
do { \ |
(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \ |
(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \ |
if ((vvp)->tv_usec < 0) { \ |
(vvp)->tv_sec--; \ |
(vvp)->tv_usec += 1000000; \ |
} \ |
} while (0) |
#endif |
#endif /* __BSD_VISIBLE */ |
#endif /* _TIMEVAL_DEFINED */ |
#endif /* !_SYS__TIMEVAL_H_ */ |
/contrib/sdk/sources/newlib/libc/include/sys/cdefs.h |
---|
69,7 → 69,9 |
/* |
* Testing against Clang-specific extensions. |
*/ |
#ifndef __has_attribute |
#define __has_attribute(x) 0 |
#endif |
#ifndef __has_extension |
#define __has_extension __has_feature |
#endif |
114,12 → 116,12 |
#endif |
#define __GNUCLIKE_BUILTIN_CONSTANT_P 1 |
# if defined(__INTEL_COMPILER) && defined(__cplusplus) \ |
&& __INTEL_COMPILER < 800 |
#if defined(__INTEL_COMPILER) && defined(__cplusplus) && \ |
__INTEL_COMPILER < 800 |
# undef __GNUCLIKE_BUILTIN_CONSTANT_P |
# endif |
#if (__GNUC_MINOR__ > 95 || __GNUC__ >= 3) && !defined(__INTEL_COMPILER) |
#if (__GNUC_MINOR__ > 95 || __GNUC__ >= 3) |
# define __GNUCLIKE_BUILTIN_VARARGS 1 |
# define __GNUCLIKE_BUILTIN_STDARG 1 |
# define __GNUCLIKE_BUILTIN_VAALIST 1 |
229,8 → 231,12 |
#define __unused |
#define __packed |
#define __aligned(x) |
#define __alloc_align(x) |
#define __alloc_size(x) |
#define __section(x) |
#define __weak_symbol |
#else |
#define __weak_symbol __attribute__((__weak__)) |
#if !__GNUC_PREREQ__(2, 5) && !defined(__INTEL_COMPILER) |
#define __dead2 |
#define __pure2 |
242,7 → 248,7 |
#define __unused |
/* XXX Find out what to do for __packed, __aligned and __section */ |
#endif |
#if __GNUC_PREREQ__(2, 7) |
#if __GNUC_PREREQ__(2, 7) || defined(__INTEL_COMPILER) |
#define __dead2 __attribute__((__noreturn__)) |
#define __pure2 __attribute__((__const__)) |
#define __unused __attribute__((__unused__)) |
251,16 → 257,17 |
#define __aligned(x) __attribute__((__aligned__(x))) |
#define __section(x) __attribute__((__section__(x))) |
#endif |
#if defined(__INTEL_COMPILER) |
#define __dead2 __attribute__((__noreturn__)) |
#define __pure2 __attribute__((__const__)) |
#define __unused __attribute__((__unused__)) |
#define __used __attribute__((__used__)) |
#define __packed __attribute__((__packed__)) |
#define __aligned(x) __attribute__((__aligned__(x))) |
#define __section(x) __attribute__((__section__(x))) |
#if __GNUC_PREREQ__(4, 3) || __has_attribute(__alloc_size__) |
#define __alloc_size(x) __attribute__((__alloc_size__(x))) |
#else |
#define __alloc_size(x) |
#endif |
#if __GNUC_PREREQ__(4, 9) || __has_attribute(__alloc_align__) |
#define __alloc_align(x) __attribute__((__alloc_align__(x))) |
#else |
#define __alloc_align(x) |
#endif |
#endif /* lint */ |
#if !__GNUC_PREREQ__(2, 95) |
#define __alignof(x) __offsetof(struct { char __a; x __b; }, __b) |
270,7 → 277,7 |
* Keywords added in C11. |
*/ |
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L |
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L || defined(lint) |
#if !__has_extension(c_alignas) |
#if (defined(__cplusplus) && __cplusplus >= 201103L) || \ |
302,16 → 309,17 |
#define _Noreturn __dead2 |
#endif |
#if __GNUC_PREREQ__(4, 6) && !defined(__cplusplus) |
/* Do nothing: _Static_assert() works as per C11 */ |
#elif !__has_extension(c_static_assert) |
#if !__has_extension(c_static_assert) |
#if (defined(__cplusplus) && __cplusplus >= 201103L) || \ |
__has_extension(cxx_static_assert) |
#define _Static_assert(x, y) static_assert(x, y) |
#elif __GNUC_PREREQ__(4,6) |
/* Nothing, gcc 4.6 and higher has _Static_assert built-in */ |
#elif defined(__COUNTER__) |
#define _Static_assert(x, y) __Static_assert(x, __COUNTER__) |
#define __Static_assert(x, y) ___Static_assert(x, y) |
#define ___Static_assert(x, y) typedef char __assert_ ## y[(x) ? 1 : -1] |
#define ___Static_assert(x, y) typedef char __assert_ ## y[(x) ? 1 : -1] \ |
__unused |
#else |
#define _Static_assert(x, y) struct __hack |
#endif |
318,7 → 326,11 |
#endif |
#if !__has_extension(c_thread_local) |
/* XXX: Change this to test against C++11 when clang in base supports it. */ |
/* |
* XXX: Some compilers (Clang 3.3, GCC 4.7) falsely announce C++11 mode |
* without actually supporting the thread_local keyword. Don't check for |
* the presence of C++11 when defining _Thread_local. |
*/ |
#if /* (defined(__cplusplus) && __cplusplus >= 201103L) || */ \ |
__has_extension(cxx_thread_local) |
#define _Thread_local thread_local |
338,7 → 350,8 |
* distinguish multiple cases. |
*/ |
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L |
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \ |
__has_extension(c_generic_selections) |
#define __generic(expr, t, yes, no) \ |
_Generic(expr, t: yes, default: no) |
#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus) |
369,14 → 382,18 |
#if __GNUC_PREREQ__(3, 3) |
#define __nonnull(x) __attribute__((__nonnull__(x))) |
#define __nonnull_all __attribute__((__nonnull__)) |
#else |
#define __nonnull(x) |
#define __nonnull_all |
#endif |
#if __GNUC_PREREQ__(3, 4) |
#define __fastcall __attribute__((__fastcall__)) |
#define __result_use_check __attribute__((__warn_unused_result__)) |
#else |
#define __fastcall |
#define __result_use_check |
#endif |
#if __GNUC_PREREQ__(4, 1) |
385,6 → 402,12 |
#define __returns_twice |
#endif |
#if __GNUC_PREREQ__(4, 6) || __has_builtin(__builtin_unreachable) |
#define __unreachable() __builtin_unreachable() |
#else |
#define __unreachable() ((void)0) |
#endif |
/* XXX: should use `#if __STDC_VERSION__ < 199901'. */ |
#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER) |
#define __func__ NULL |
440,12 → 463,14 |
#define __predict_false(exp) (exp) |
#endif |
#if __GNUC_PREREQ__(4, 2) |
#if __GNUC_PREREQ__(4, 0) |
#define __sentinel __attribute__((__sentinel__)) |
#define __exported __attribute__((__visibility__("default"))) |
#define __hidden __attribute__((__visibility__("hidden"))) |
#define __exported __attribute__((__visibility__("default"))) |
#else |
#define __sentinel |
#define __exported |
#define __hidden |
#define __exported |
#endif |
#define __offsetof(type, field) offsetof(type, field) |
460,7 → 485,7 |
*/ |
#if __GNUC_PREREQ__(3, 1) |
#define __containerof(x, s, m) ({ \ |
const volatile __typeof__(((s *)0)->m) *__x = (x); \ |
const volatile __typeof(((s *)0)->m) *__x = (x); \ |
__DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));\ |
}) |
#else |
492,6 → 517,22 |
__attribute__((__format__ (__strftime__, fmtarg, firstvararg))) |
#endif |
/* |
* FORTIFY_SOURCE, and perhaps other compiler-specific features, require |
* the use of non-standard inlining. In general we should try to avoid |
* using these but GCC-compatible compilers tend to support the extensions |
* well enough to use them in limited cases. |
*/ |
#if defined(__GNUC_GNU_INLINE__) || defined(__GNUC_STDC_INLINE__) |
#if __GNUC_PREREQ__(4, 3) || __has_attribute(__artificial__) |
#define __gnu_inline __attribute__((__gnu_inline__, __artificial__)) |
#else |
#define __gnu_inline __attribute__((__gnu_inline__)) |
#endif /* artificial */ |
#else |
#define __gnu_inline |
#endif |
/* Compiler-dependent macros that rely on FreeBSD-specific extensions. */ |
#if defined(__FreeBSD_cc_version) && __FreeBSD_cc_version >= 300001 && \ |
defined(__GNUC__) && !defined(__INTEL_COMPILER) |
606,6 → 647,14 |
* Our macros begin with two underscores to avoid namespace screwage. |
*/ |
/* Deal with _GNU_SOURCE, which implies everything and the kitchen sink */ |
#ifdef _GNU_SOURCE |
#undef _XOPEN_SOURCE |
#define _XOPEN_SOURCE 700 |
#define __BSD_VISIBLE 1 |
#define __GNU_VISIBLE 1 |
#endif |
/* Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1. */ |
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 1 |
#undef _POSIX_C_SOURCE /* Probably illegal, but beyond caring now. */ |
693,12 → 742,6 |
#define __XSI_VISIBLE 0 |
#define __BSD_VISIBLE 0 |
#define __ISO_C_VISIBLE 2011 |
#elif defined(_GNU_SOURCE) /* Everything and the kitchen sink. */ |
#define __POSIX_VISIBLE 200809 |
#define __XSI_VISIBLE 700 |
#define __BSD_VISIBLE 1 |
#define __ISO_C_VISIBLE 2011 |
#define __GNU_VISIBLE 1 |
#else /* Default: everything except __GNU_VISIBLE. */ |
#define __POSIX_VISIBLE 200809 |
#define __XSI_VISIBLE 700 |
707,4 → 750,79 |
#endif |
#endif |
/* |
* Type Safety Checking |
* |
* Clang provides additional attributes to enable checking type safety |
* properties that cannot be enforced by the C type system. |
*/ |
#if __has_attribute(__argument_with_type_tag__) && \ |
__has_attribute(__type_tag_for_datatype__) && !defined(lint) |
#define __arg_type_tag(arg_kind, arg_idx, type_tag_idx) \ |
__attribute__((__argument_with_type_tag__(arg_kind, arg_idx, type_tag_idx))) |
#define __datatype_type_tag(kind, type) \ |
__attribute__((__type_tag_for_datatype__(kind, type))) |
#else |
#define __arg_type_tag(arg_kind, arg_idx, type_tag_idx) |
#define __datatype_type_tag(kind, type) |
#endif |
/* |
* Lock annotations. |
* |
* Clang provides support for doing basic thread-safety tests at |
* compile-time, by marking which locks will/should be held when |
* entering/leaving a functions. |
* |
* Furthermore, it is also possible to annotate variables and structure |
* members to enforce that they are only accessed when certain locks are |
* held. |
*/ |
#if __has_extension(c_thread_safety_attributes) |
#define __lock_annotate(x) __attribute__((x)) |
#else |
#define __lock_annotate(x) |
#endif |
/* Structure implements a lock. */ |
#define __lockable __lock_annotate(lockable) |
/* Function acquires an exclusive or shared lock. */ |
#define __locks_exclusive(...) \ |
__lock_annotate(exclusive_lock_function(__VA_ARGS__)) |
#define __locks_shared(...) \ |
__lock_annotate(shared_lock_function(__VA_ARGS__)) |
/* Function attempts to acquire an exclusive or shared lock. */ |
#define __trylocks_exclusive(...) \ |
__lock_annotate(exclusive_trylock_function(__VA_ARGS__)) |
#define __trylocks_shared(...) \ |
__lock_annotate(shared_trylock_function(__VA_ARGS__)) |
/* Function releases a lock. */ |
#define __unlocks(...) __lock_annotate(unlock_function(__VA_ARGS__)) |
/* Function asserts that an exclusive or shared lock is held. */ |
#define __asserts_exclusive(...) \ |
__lock_annotate(assert_exclusive_lock(__VA_ARGS__)) |
#define __asserts_shared(...) \ |
__lock_annotate(assert_shared_lock(__VA_ARGS__)) |
/* Function requires that an exclusive or shared lock is or is not held. */ |
#define __requires_exclusive(...) \ |
__lock_annotate(exclusive_locks_required(__VA_ARGS__)) |
#define __requires_shared(...) \ |
__lock_annotate(shared_locks_required(__VA_ARGS__)) |
#define __requires_unlocked(...) \ |
__lock_annotate(locks_excluded(__VA_ARGS__)) |
/* Function should not be analyzed. */ |
#define __no_lock_analysis __lock_annotate(no_thread_safety_analysis) |
/* Guard variables and structure members by lock. */ |
#define __guarded_by(x) __lock_annotate(guarded_by(x)) |
#define __pt_guarded_by(x) __lock_annotate(pt_guarded_by(x)) |
#endif /* !_SYS_CDEFS_H_ */ |
/contrib/sdk/sources/newlib/libc/include/sys/config.h |
---|
75,6 → 75,10 |
#define _POINTER_INT short |
#endif |
#if defined(__m68k__) || defined(__mc68000__) |
#define _READ_WRITE_RETURN_TYPE _ssize_t |
#endif |
#ifdef ___AM29K__ |
#define _FLOAT_RET double |
#endif |
181,6 → 185,10 |
#define __CUSTOM_FILE_IO__ |
#endif |
#if defined(__or1k__) || defined(__or1knd__) |
#define __DYNAMIC_REENT__ |
#endif |
/* This block should be kept in sync with GCC's limits.h. The point |
of having these definitions here is to not include limits.h, which |
would pollute the user namespace, while still using types of the |
/contrib/sdk/sources/newlib/libc/include/sys/errno.h |
---|
28,7 → 28,7 |
#define __errno_r(ptr) ((ptr)->_errno) |
#define EPERM 1 /* Not super-user */ |
#define EPERM 1 /* Not owner */ |
#define ENOENT 2 /* No such file or directory */ |
#define ESRCH 3 /* No such process */ |
#define EINTR 4 /* Interrupted system call */ |
39,13 → 39,13 |
#define EBADF 9 /* Bad file number */ |
#define ECHILD 10 /* No children */ |
#define EAGAIN 11 /* No more processes */ |
#define ENOMEM 12 /* Not enough core */ |
#define ENOMEM 12 /* Not enough space */ |
#define EACCES 13 /* Permission denied */ |
#define EFAULT 14 /* Bad address */ |
#ifdef __LINUX_ERRNO_EXTENSIONS__ |
#define ENOTBLK 15 /* Block device required */ |
#endif |
#define EBUSY 16 /* Mount device busy */ |
#define EBUSY 16 /* Device or resource busy */ |
#define EEXIST 17 /* File exists */ |
#define EXDEV 18 /* Cross-device link */ |
#define ENODEV 19 /* No such device */ |
53,17 → 53,17 |
#define EISDIR 21 /* Is a directory */ |
#define EINVAL 22 /* Invalid argument */ |
#define ENFILE 23 /* Too many open files in system */ |
#define EMFILE 24 /* Too many open files */ |
#define ENOTTY 25 /* Not a typewriter */ |
#define EMFILE 24 /* File descriptor value too large */ |
#define ENOTTY 25 /* Not a character device */ |
#define ETXTBSY 26 /* Text file busy */ |
#define EFBIG 27 /* File too large */ |
#define ENOSPC 28 /* No space left on device */ |
#define ESPIPE 29 /* Illegal seek */ |
#define EROFS 30 /* Read only file system */ |
#define EROFS 30 /* Read-only file system */ |
#define EMLINK 31 /* Too many links */ |
#define EPIPE 32 /* Broken pipe */ |
#define EDOM 33 /* Math arg out of domain of func */ |
#define ERANGE 34 /* Math result not representable */ |
#define EDOM 33 /* Mathematics argument out of domain of function */ |
#define ERANGE 34 /* Result too large */ |
#define ENOMSG 35 /* No message of desired type */ |
#define EIDRM 36 /* Identifier removed */ |
#ifdef __LINUX_ERRNO_EXTENSIONS__ |
76,8 → 76,8 |
#define ENOCSI 43 /* No CSI structure available */ |
#define EL2HLT 44 /* Level 2 halted */ |
#endif |
#define EDEADLK 45 /* Deadlock condition */ |
#define ENOLCK 46 /* No record locks available */ |
#define EDEADLK 45 /* Deadlock */ |
#define ENOLCK 46 /* No lock */ |
#ifdef __LINUX_ERRNO_EXTENSIONS__ |
#define EBADE 50 /* Invalid exchange */ |
#define EBADR 51 /* Invalid request descriptor */ |
88,16 → 88,16 |
#define EDEADLOCK 56 /* File locking deadlock error */ |
#define EBFONT 57 /* Bad font file fmt */ |
#endif |
#define ENOSTR 60 /* Device not a stream */ |
#define ENOSTR 60 /* Not a stream */ |
#define ENODATA 61 /* No data (for no delay io) */ |
#define ETIME 62 /* Timer expired */ |
#define ENOSR 63 /* Out of streams resources */ |
#define ETIME 62 /* Stream ioctl timeout */ |
#define ENOSR 63 /* No stream resources */ |
#ifdef __LINUX_ERRNO_EXTENSIONS__ |
#define ENONET 64 /* Machine is not on the network */ |
#define ENOPKG 65 /* Package not installed */ |
#define EREMOTE 66 /* The object is remote */ |
#endif |
#define ENOLINK 67 /* The link has been severed */ |
#define ENOLINK 67 /* Virtual circuit is gone */ |
#ifdef __LINUX_ERRNO_EXTENSIONS__ |
#define EADV 68 /* Advertise error */ |
#define ESRMNT 69 /* Srmount error */ |
109,7 → 109,7 |
#define ELBIN 75 /* Inode is remote (not really error) */ |
#define EDOTDOT 76 /* Cross mount point (not really error) */ |
#endif |
#define EBADMSG 77 /* Trying to read unreadable message */ |
#define EBADMSG 77 /* Bad message */ |
#define EFTYPE 79 /* Inappropriate file type or format */ |
#ifdef __LINUX_ERRNO_EXTENSIONS__ |
#define ENOTUNIQ 80 /* Given log. name not unique */ |
128,7 → 128,7 |
#define ENOTEMPTY 90 /* Directory not empty */ |
#define ENAMETOOLONG 91 /* File or path name too long */ |
#define ELOOP 92 /* Too many symbolic links */ |
#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ |
#define EOPNOTSUPP 95 /* Operation not supported on socket */ |
#define EPFNOSUPPORT 96 /* Protocol family not supported */ |
#define ECONNRESET 104 /* Connection reset by peer */ |
#define ENOBUFS 105 /* No buffer space available */ |
141,7 → 141,7 |
#endif |
#define ECONNREFUSED 111 /* Connection refused */ |
#define EADDRINUSE 112 /* Address already in use */ |
#define ECONNABORTED 113 /* Connection aborted */ |
#define ECONNABORTED 113 /* Software caused connection abort */ |
#define ENETUNREACH 114 /* Network is unreachable */ |
#define ENETDOWN 115 /* Network interface is not configured */ |
#define ETIMEDOUT 116 /* Connection timed out */ |
156,7 → 156,7 |
#define ESOCKTNOSUPPORT 124 /* Socket type not supported */ |
#endif |
#define EADDRNOTAVAIL 125 /* Address not available */ |
#define ENETRESET 126 |
#define ENETRESET 126 /* Connection aborted by network */ |
#define EISCONN 127 /* Socket is already connected */ |
#define ENOTCONN 128 /* Socket is not connected */ |
#define ETOOMANYREFS 129 |
174,7 → 174,7 |
#define ENOSHARE 136 /* No such host or network path */ |
#define ECASECLASH 137 /* Filename exists with different case */ |
#endif |
#define EILSEQ 138 |
#define EILSEQ 138 /* Illegal byte sequence */ |
#define EOVERFLOW 139 /* Value too large for defined data type */ |
#define ECANCELED 140 /* Operation canceled */ |
#define ENOTRECOVERABLE 141 /* State not recoverable */ |
/contrib/sdk/sources/newlib/libc/include/sys/features.h |
---|
1,7 → 1,7 |
/* |
* Written by Joel Sherrill <joel@OARcorp.com>. |
* |
* COPYRIGHT (c) 1989-2000. |
* COPYRIGHT (c) 1989-2014. |
* |
* On-Line Applications Research Corporation (OAR). |
* |
15,7 → 15,7 |
* OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS |
* SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. |
* |
* $Id: features.h,v 1.30 2013/04/23 09:42:25 corinna Exp $ |
* $Id$ |
*/ |
#ifndef _SYS_FEATURES_H |
25,6 → 25,12 |
extern "C" { |
#endif |
/* Macros to determine that newlib is being used. Put in this header to |
* be similar to where glibc stores its version of these macros. |
*/ |
#define __NEWLIB__ 2 |
#define __NEWLIB_MINOR__ 2 |
/* Macro to test version of GCC. Returns 0 for non-GCC or too old GCC. */ |
#ifndef __GNUC_PREREQ |
# if defined __GNUC__ && defined __GNUC_MINOR__ |
/contrib/sdk/sources/newlib/libc/include/sys/param.h |
---|
10,6 → 10,9 |
#include <machine/endian.h> |
#include <machine/param.h> |
#ifndef NBBY |
# define NBBY 8 /* number of bits in a byte */ |
#endif |
#ifndef HZ |
# define HZ (60) |
#endif |
25,4 → 28,8 |
#define MAX(a,b) ((a) > (b) ? (a) : (b)) |
#define MIN(a,b) ((a) < (b) ? (a) : (b)) |
#ifndef howmany |
#define howmany(x, y) (((x)+((y)-1))/(y)) |
#endif |
#endif |
/contrib/sdk/sources/newlib/libc/include/sys/reent.h |
---|
446,9 → 446,8 |
_NULL \ |
} |
#define _REENT_INIT_PTR(var) \ |
{ memset((var), 0, sizeof(*(var))); \ |
(var)->_stdin = (__FILE *)&__sf_fake_stdin; \ |
#define _REENT_INIT_PTR_ZEROED(var) \ |
{ (var)->_stdin = (__FILE *)&__sf_fake_stdin; \ |
(var)->_stdout = (__FILE *)&__sf_fake_stdout; \ |
(var)->_stderr = (__FILE *)&__sf_fake_stderr; \ |
(var)->_current_locale = "C"; \ |
694,9 → 693,8 |
{_NULL, 0, _NULL} \ |
} |
#define _REENT_INIT_PTR(var) \ |
{ memset((var), 0, sizeof(*(var))); \ |
(var)->_stdin = &(var)->__sf[0]; \ |
#define _REENT_INIT_PTR_ZEROED(var) \ |
{ (var)->_stdin = &(var)->__sf[0]; \ |
(var)->_stdout = &(var)->__sf[1]; \ |
(var)->_stderr = &(var)->__sf[2]; \ |
(var)->_current_locale = "C"; \ |
745,6 → 743,11 |
#endif /* !_REENT_SMALL */ |
#define _REENT_INIT_PTR(var) \ |
{ memset((var), 0, sizeof(*(var))); \ |
_REENT_INIT_PTR_ZEROED(var); \ |
} |
/* This value is used in stdlib/misc.c. reent/reent.c has to know it |
as well to make sure the freelist is correctly free'd. Therefore |
we define it here, rather than in stdlib/misc.c, as before. */ |
/contrib/sdk/sources/newlib/libc/include/sys/resource.h |
---|
11,5 → 11,7 |
struct timeval ru_stime; /* system time used */ |
}; |
int _EXFUN(getrusage, (int, struct rusage*)); |
#endif |
/contrib/sdk/sources/newlib/libc/include/sys/sched.h |
---|
14,7 → 14,7 |
* OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS |
* SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. |
* |
* $Id: sched.h,v 1.3 2010/04/01 18:33:37 jjohnstn Exp $ |
* $Id$ |
*/ |
21,6 → 21,8 |
#ifndef _SYS_SCHED_H_ |
#define _SYS_SCHED_H_ |
#include <sys/_timespec.h> |
#ifdef __cplusplus |
extern "C" { |
#endif |
/contrib/sdk/sources/newlib/libc/include/sys/select.h |
---|
0,0 → 1,86 |
/* select.h |
Copyright 1998, 1999, 2000, 2001, 2005, 2009 Red Hat, Inc. |
Written by Geoffrey Noer <noer@cygnus.com> |
This file is part of Cygwin. |
This software is a copyrighted work licensed under the terms of the |
Cygwin license. Please consult the file "CYGWIN_LICENSE" for |
details. */ |
#ifndef _SYS_SELECT_H |
#define _SYS_SELECT_H |
/* We don't define fd_set and friends if we are compiling POSIX |
source, or if we have included (or may include as indicated |
by __USE_W32_SOCKETS) the W32api winsock[2].h header which |
defines Windows versions of them. Note that a program which |
includes the W32api winsock[2].h header must know what it is doing; |
it must not call the Cygwin select function. |
*/ |
# if !(defined (_POSIX_SOURCE) || defined (_WINSOCK_H) || defined (_WINSOCKAPI_) || defined (__USE_W32_SOCKETS)) |
#include <sys/cdefs.h> |
#include <sys/_sigset.h> |
#include <sys/_timeval.h> |
#include <sys/timespec.h> |
#if !defined(_SIGSET_T_DECLARED) |
#define _SIGSET_T_DECLARED |
typedef __sigset_t sigset_t; |
#endif |
# define _SYS_TYPES_FD_SET |
/* |
* Select uses bit masks of file descriptors in longs. |
* These macros manipulate such bit fields (the filesystem macros use chars). |
* FD_SETSIZE may be defined by the user, but the default here |
* should be >= NOFILE (param.h). |
*/ |
# ifndef FD_SETSIZE |
# define FD_SETSIZE 64 |
# endif |
typedef unsigned long fd_mask; |
# define NFDBITS (sizeof (fd_mask) * 8) /* bits per mask */ |
# ifndef _howmany |
# define _howmany(x,y) (((x)+((y)-1))/(y)) |
# endif |
/* We use a macro for fd_set so that including Sockets.h afterwards |
can work. */ |
typedef struct _types_fd_set { |
fd_mask fds_bits[_howmany(FD_SETSIZE, NFDBITS)]; |
} _types_fd_set; |
#define fd_set _types_fd_set |
# define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1L << ((n) % NFDBITS))) |
# define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1L << ((n) % NFDBITS))) |
# define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1L << ((n) % NFDBITS))) |
# define FD_ZERO(p) (__extension__ (void)({ \ |
size_t __i; \ |
char *__tmp = (char *)p; \ |
for (__i = 0; __i < sizeof (*(p)); ++__i) \ |
*__tmp++ = 0; \ |
})) |
#if !defined (__INSIDE_CYGWIN_NET__) |
__BEGIN_DECLS |
int select __P ((int __n, fd_set *__readfds, fd_set *__writefds, |
fd_set *__exceptfds, struct timeval *__timeout)); |
int pselect __P ((int __n, fd_set *__readfds, fd_set *__writefds, |
fd_set *__exceptfds, const struct timespec *__timeout, |
const sigset_t *__set)); |
__END_DECLS |
#endif |
#endif /* !_POSIX_SOURCE, !__INSIDE_CYGWIN_NET__ */ |
#endif /* sys/select.h */ |
/contrib/sdk/sources/newlib/libc/include/sys/signal.h |
---|
7,14 → 7,17 |
#endif |
#include "_ansi.h" |
#include <sys/cdefs.h> |
#include <sys/features.h> |
#include <sys/types.h> |
#include <sys/_sigset.h> |
#include <sys/_timespec.h> |
/* #ifndef __STRICT_ANSI__*/ |
/* Cygwin defines it's own sigset_t in include/cygwin/signal.h */ |
#ifndef __CYGWIN__ |
typedef unsigned long sigset_t; |
#if !defined(_SIGSET_T_DECLARED) |
#define _SIGSET_T_DECLARED |
typedef __sigset_t sigset_t; |
#endif |
#if defined(__rtems__) |
71,9 → 74,12 |
/* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76 */ |
#define SA_NOCLDSTOP 1 /* Do not generate SIGCHLD when children stop */ |
#define SA_SIGINFO 2 /* Invoke the signal catching function with */ |
#define SA_NOCLDSTOP 0x1 /* Do not generate SIGCHLD when children stop */ |
#define SA_SIGINFO 0x2 /* Invoke the signal catching function with */ |
/* three arguments instead of one. */ |
#if __BSD_VISIBLE || __XSI_VISIBLE || __POSIX_VISIBLE >= 200112 |
#define SA_ONSTACK 0x4 /* Signal delivery will be on a separate stack. */ |
#endif |
/* struct sigaction notes from POSIX: |
* |
119,6 → 125,35 |
}; |
#endif /* defined(__rtems__) */ |
#if __BSD_VISIBLE || __XSI_VISIBLE || __POSIX_VISIBLE >= 200112 |
/* |
* Minimum and default signal stack constants. Allow for target overrides |
* from <sys/features.h>. |
*/ |
#ifndef MINSIGSTKSZ |
#define MINSIGSTKSZ 2048 |
#endif |
#ifndef SIGSTKSZ |
#define SIGSTKSZ 8192 |
#endif |
/* |
* Possible values for ss_flags in stack_t below. |
*/ |
#define SS_ONSTACK 0x1 |
#define SS_DISABLE 0x2 |
#endif |
/* |
* Structure used in sigaltstack call. |
*/ |
typedef struct sigaltstack { |
void *ss_sp; /* Stack base or pointer. */ |
int ss_flags; /* Flags. */ |
size_t ss_size; /* Stack size. */ |
} stack_t; |
#define SIG_SETMASK 0 /* set mask with sigprocmask() */ |
#define SIG_BLOCK 1 /* set of signals to block */ |
#define SIG_UNBLOCK 2 /* set of signals to, well, unblock */ |
138,7 → 173,6 |
int _EXFUN(pthread_sigmask, (int how, const sigset_t *set, sigset_t *oset)); |
#endif |
/* protos for functions found in winsup sources for CYGWIN */ |
#if defined(__CYGWIN__) || defined(__rtems__) |
#undef sigaddset |
#undef sigdelset |
148,8 → 182,12 |
#ifdef _COMPILING_NEWLIB |
int _EXFUN(_kill, (pid_t, int)); |
#endif |
#endif /* _COMPILING_NEWLIB */ |
#endif /* __CYGWIN__ || __rtems__ */ |
int _EXFUN(kill, (pid_t, int)); |
#if defined(__CYGWIN__) || defined(__rtems__) |
int _EXFUN(killpg, (pid_t, int)); |
int _EXFUN(sigaction, (int, const struct sigaction *, struct sigaction *)); |
int _EXFUN(sigaddset, (sigset_t *, const int)); |
161,6 → 199,12 |
int _EXFUN(sigsuspend, (const sigset_t *)); |
int _EXFUN(sigpause, (int)); |
#if defined(__CYGWIN__) || defined(__rtems__) |
#if __BSD_VISIBLE || __XSI_VISIBLE || __POSIX_VISIBLE >= 200112 |
int _EXFUN(sigaltstack, (const stack_t *__restrict, stack_t *__restrict)); |
#endif |
#endif |
#if defined(_POSIX_THREADS) |
#ifdef __CYGWIN__ |
# ifndef _CYGWIN_TYPES_H |
309,6 → 353,12 |
} |
#endif |
#if defined(__CYGWIN__) |
#if __POSIX_VISIBLE >= 200809 |
#include <sys/ucontext.h> |
#endif |
#endif |
#ifndef _SIGNAL_H_ |
/* Some applications take advantage of the fact that <sys/signal.h> |
* and <signal.h> are equivalent in glibc. Allow for that here. */ |
/contrib/sdk/sources/newlib/libc/include/sys/stat.h |
---|
7,7 → 7,9 |
#include <_ansi.h> |
#include <time.h> |
#include <sys/cdefs.h> |
#include <sys/types.h> |
#include <sys/_timespec.h> |
/* dj's stat defines _STAT_H_ */ |
#ifndef _STAT_H_ |
142,6 → 144,8 |
#define UTIME_OMIT -1L |
#endif |
int _EXFUN(chmod,( const char *__path, mode_t __mode )); |
int _EXFUN(fchmod,(int __fd, mode_t __mode)); |
int _EXFUN(fstat,( int __fd, struct stat *__sbuf )); |
int _EXFUN(mkdir,( const char *_path, mode_t __mode )); |
int _EXFUN(mkfifo,( const char *__path, mode_t __mode )); |
153,12 → 157,18 |
int _EXFUN(mknod,( const char *__path, mode_t __mode, dev_t __dev )); |
#endif |
#if defined (__CYGWIN__) && !defined(__INSIDE_CYGWIN__) |
#if (__POSIX_VISIBLE >= 200809 || defined (__CYGWIN__)) && !defined(__INSIDE_CYGWIN__) |
int _EXFUN(fchmodat, (int, const char *, mode_t, int)); |
#endif |
#if (__BSD_VISIBLE || __POSIX_VISIBLE >= 200809 || defined (__CYGWIN__)) && !defined(__INSIDE_CYGWIN__) |
int _EXFUN(fstatat, (int, const char *__restrict , struct stat *__restrict, int)); |
int _EXFUN(mkdirat, (int, const char *, mode_t)); |
int _EXFUN(mkfifoat, (int, const char *, mode_t)); |
#endif |
#if (__BSD_VISIBLE || __XSI_VISIBLE >= 700 || defined (__CYGWIN__)) && !defined(__INSIDE_CYGWIN__) |
int _EXFUN(mknodat, (int, const char *, mode_t, dev_t)); |
#endif |
#if (__BSD_VISIBLE || __POSIX_VISIBLE >= 200809 || defined (__CYGWIN__)) && !defined(__INSIDE_CYGWIN__) |
int _EXFUN(utimensat, (int, const char *, const struct timespec *, int)); |
int _EXFUN(futimens, (int, const struct timespec *)); |
#endif |
/contrib/sdk/sources/newlib/libc/include/sys/time.h |
---|
2,87 → 2,444 |
Written by Geoffrey Noer <noer@cygnus.com> |
Public domain; no rights reserved. */ |
/*- |
* Copyright (c) 1982, 1986, 1993 |
* The Regents of the University of California. All rights reserved. |
* |
* 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. |
* 4. 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. |
* |
* @(#)time.h 8.5 (Berkeley) 5/4/95 |
* $FreeBSD$ |
*/ |
#ifndef _SYS_TIME_H_ |
#define _SYS_TIME_H_ |
#include <_ansi.h> |
#include <sys/cdefs.h> |
#include <sys/_timeval.h> |
#include <sys/types.h> |
#include <sys/timespec.h> |
#ifdef __cplusplus |
extern "C" { |
#if __BSD_VISIBLE |
#include <sys/select.h> |
#endif |
#ifndef _TIMEVAL_DEFINED |
#define _TIMEVAL_DEFINED |
struct timeval { |
time_t tv_sec; |
suseconds_t tv_usec; |
struct timezone { |
int tz_minuteswest; /* minutes west of Greenwich */ |
int tz_dsttime; /* type of dst correction */ |
}; |
#define DST_NONE 0 /* not on dst */ |
#define DST_USA 1 /* USA style dst */ |
#define DST_AUST 2 /* Australian style dst */ |
#define DST_WET 3 /* Western European dst */ |
#define DST_MET 4 /* Middle European dst */ |
#define DST_EET 5 /* Eastern European dst */ |
#define DST_CAN 6 /* Canada */ |
/* BSD time macros used by RTEMS code */ |
#if defined (__rtems__) || defined (__CYGWIN__) |
#if __BSD_VISIBLE |
struct bintime { |
time_t sec; |
uint64_t frac; |
}; |
/* Convenience macros for operations on timevals. |
NOTE: `timercmp' does not work for >= or <=. */ |
#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) |
#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) |
#define timercmp(a, b, CMP) \ |
(((a)->tv_sec == (b)->tv_sec) ? \ |
((a)->tv_usec CMP (b)->tv_usec) : \ |
((a)->tv_sec CMP (b)->tv_sec)) |
#define timeradd(a, b, result) \ |
static __inline void |
bintime_addx(struct bintime *_bt, uint64_t _x) |
{ |
uint64_t _u; |
_u = _bt->frac; |
_bt->frac += _x; |
if (_u > _bt->frac) |
_bt->sec++; |
} |
static __inline void |
bintime_add(struct bintime *_bt, const struct bintime *_bt2) |
{ |
uint64_t _u; |
_u = _bt->frac; |
_bt->frac += _bt2->frac; |
if (_u > _bt->frac) |
_bt->sec++; |
_bt->sec += _bt2->sec; |
} |
static __inline void |
bintime_sub(struct bintime *_bt, const struct bintime *_bt2) |
{ |
uint64_t _u; |
_u = _bt->frac; |
_bt->frac -= _bt2->frac; |
if (_u < _bt->frac) |
_bt->sec--; |
_bt->sec -= _bt2->sec; |
} |
static __inline void |
bintime_mul(struct bintime *_bt, u_int _x) |
{ |
uint64_t _p1, _p2; |
_p1 = (_bt->frac & 0xffffffffull) * _x; |
_p2 = (_bt->frac >> 32) * _x + (_p1 >> 32); |
_bt->sec *= _x; |
_bt->sec += (_p2 >> 32); |
_bt->frac = (_p2 << 32) | (_p1 & 0xffffffffull); |
} |
static __inline void |
bintime_shift(struct bintime *_bt, int _exp) |
{ |
if (_exp > 0) { |
_bt->sec <<= _exp; |
_bt->sec |= _bt->frac >> (64 - _exp); |
_bt->frac <<= _exp; |
} else if (_exp < 0) { |
_bt->frac >>= -_exp; |
_bt->frac |= (uint64_t)_bt->sec << (64 + _exp); |
_bt->sec >>= -_exp; |
} |
} |
#define bintime_clear(a) ((a)->sec = (a)->frac = 0) |
#define bintime_isset(a) ((a)->sec || (a)->frac) |
#define bintime_cmp(a, b, cmp) \ |
(((a)->sec == (b)->sec) ? \ |
((a)->frac cmp (b)->frac) : \ |
((a)->sec cmp (b)->sec)) |
#define SBT_1S ((sbintime_t)1 << 32) |
#define SBT_1M (SBT_1S * 60) |
#define SBT_1MS (SBT_1S / 1000) |
#define SBT_1US (SBT_1S / 1000000) |
#define SBT_1NS (SBT_1S / 1000000000) |
#define SBT_MAX 0x7fffffffffffffffLL |
static __inline int |
sbintime_getsec(sbintime_t _sbt) |
{ |
return (_sbt >> 32); |
} |
static __inline sbintime_t |
bttosbt(const struct bintime _bt) |
{ |
return (((sbintime_t)_bt.sec << 32) + (_bt.frac >> 32)); |
} |
static __inline struct bintime |
sbttobt(sbintime_t _sbt) |
{ |
struct bintime _bt; |
_bt.sec = _sbt >> 32; |
_bt.frac = _sbt << 32; |
return (_bt); |
} |
/*- |
* Background information: |
* |
* When converting between timestamps on parallel timescales of differing |
* resolutions it is historical and scientific practice to round down rather |
* than doing 4/5 rounding. |
* |
* The date changes at midnight, not at noon. |
* |
* Even at 15:59:59.999999999 it's not four'o'clock. |
* |
* time_second ticks after N.999999999 not after N.4999999999 |
*/ |
static __inline void |
bintime2timespec(const struct bintime *_bt, struct timespec *_ts) |
{ |
_ts->tv_sec = _bt->sec; |
_ts->tv_nsec = ((uint64_t)1000000000 * |
(uint32_t)(_bt->frac >> 32)) >> 32; |
} |
static __inline void |
timespec2bintime(const struct timespec *_ts, struct bintime *_bt) |
{ |
_bt->sec = _ts->tv_sec; |
/* 18446744073 = int(2^64 / 1000000000) */ |
_bt->frac = _ts->tv_nsec * (uint64_t)18446744073LL; |
} |
static __inline void |
bintime2timeval(const struct bintime *_bt, struct timeval *_tv) |
{ |
_tv->tv_sec = _bt->sec; |
_tv->tv_usec = ((uint64_t)1000000 * (uint32_t)(_bt->frac >> 32)) >> 32; |
} |
static __inline void |
timeval2bintime(const struct timeval *_tv, struct bintime *_bt) |
{ |
_bt->sec = _tv->tv_sec; |
/* 18446744073709 = int(2^64 / 1000000) */ |
_bt->frac = _tv->tv_usec * (uint64_t)18446744073709LL; |
} |
static __inline struct timespec |
sbttots(sbintime_t _sbt) |
{ |
struct timespec _ts; |
_ts.tv_sec = _sbt >> 32; |
_ts.tv_nsec = ((uint64_t)1000000000 * (uint32_t)_sbt) >> 32; |
return (_ts); |
} |
static __inline sbintime_t |
tstosbt(struct timespec _ts) |
{ |
return (((sbintime_t)_ts.tv_sec << 32) + |
(_ts.tv_nsec * (((uint64_t)1 << 63) / 500000000) >> 32)); |
} |
static __inline struct timeval |
sbttotv(sbintime_t _sbt) |
{ |
struct timeval _tv; |
_tv.tv_sec = _sbt >> 32; |
_tv.tv_usec = ((uint64_t)1000000 * (uint32_t)_sbt) >> 32; |
return (_tv); |
} |
static __inline sbintime_t |
tvtosbt(struct timeval _tv) |
{ |
return (((sbintime_t)_tv.tv_sec << 32) + |
(_tv.tv_usec * (((uint64_t)1 << 63) / 500000) >> 32)); |
} |
#endif /* __BSD_VISIBLE */ |
#ifdef _KERNEL |
/* Operations on timespecs */ |
#define timespecclear(tvp) ((tvp)->tv_sec = (tvp)->tv_nsec = 0) |
#define timespecisset(tvp) ((tvp)->tv_sec || (tvp)->tv_nsec) |
#define timespeccmp(tvp, uvp, cmp) \ |
(((tvp)->tv_sec == (uvp)->tv_sec) ? \ |
((tvp)->tv_nsec cmp (uvp)->tv_nsec) : \ |
((tvp)->tv_sec cmp (uvp)->tv_sec)) |
#define timespecadd(vvp, uvp) \ |
do { \ |
(result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \ |
(result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \ |
if ((result)->tv_usec >= 1000000) \ |
{ \ |
++(result)->tv_sec; \ |
(result)->tv_usec -= 1000000; \ |
(vvp)->tv_sec += (uvp)->tv_sec; \ |
(vvp)->tv_nsec += (uvp)->tv_nsec; \ |
if ((vvp)->tv_nsec >= 1000000000) { \ |
(vvp)->tv_sec++; \ |
(vvp)->tv_nsec -= 1000000000; \ |
} \ |
} while (0) |
#define timersub(a, b, result) \ |
#define timespecsub(vvp, uvp) \ |
do { \ |
(result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ |
(result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ |
if ((result)->tv_usec < 0) { \ |
--(result)->tv_sec; \ |
(result)->tv_usec += 1000000; \ |
(vvp)->tv_sec -= (uvp)->tv_sec; \ |
(vvp)->tv_nsec -= (uvp)->tv_nsec; \ |
if ((vvp)->tv_nsec < 0) { \ |
(vvp)->tv_sec--; \ |
(vvp)->tv_nsec += 1000000000; \ |
} \ |
} while (0) |
#endif /* defined (__rtems__) || defined (__CYGWIN__) */ |
#endif /* !_TIMEVAL_DEFINED */ |
struct timezone { |
int tz_minuteswest; |
int tz_dsttime; |
}; |
/* Operations on timevals. */ |
#ifdef __CYGWIN__ |
#include <cygwin/sys_time.h> |
#endif /* __CYGWIN__ */ |
#define timevalclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) |
#define timevalisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) |
#define timevalcmp(tvp, uvp, cmp) \ |
(((tvp)->tv_sec == (uvp)->tv_sec) ? \ |
((tvp)->tv_usec cmp (uvp)->tv_usec) : \ |
((tvp)->tv_sec cmp (uvp)->tv_sec)) |
/* timevaladd and timevalsub are not inlined */ |
#endif /* _KERNEL */ |
/* |
* Names of the interval timers, and structure |
* defining a timer setting. |
*/ |
#define ITIMER_REAL 0 |
#define ITIMER_VIRTUAL 1 |
#define ITIMER_PROF 2 |
struct itimerval { |
struct timeval it_interval; |
struct timeval it_value; |
struct timeval it_interval; /* timer interval */ |
struct timeval it_value; /* current value */ |
}; |
#ifdef _COMPILING_NEWLIB |
int _EXFUN(_gettimeofday, (struct timeval *__p, void *__tz)); |
#ifdef _KERNEL |
/* |
* Kernel to clock driver interface. |
*/ |
void inittodr(time_t base); |
void resettodr(void); |
extern volatile time_t time_second; |
extern volatile time_t time_uptime; |
extern struct bintime boottimebin; |
extern struct timeval boottime; |
extern struct bintime tc_tick_bt; |
extern sbintime_t tc_tick_sbt; |
extern struct bintime tick_bt; |
extern sbintime_t tick_sbt; |
extern int tc_precexp; |
extern int tc_timepercentage; |
extern struct bintime bt_timethreshold; |
extern struct bintime bt_tickthreshold; |
extern sbintime_t sbt_timethreshold; |
extern sbintime_t sbt_tickthreshold; |
/* |
* Functions for looking at our clock: [get]{bin,nano,micro}[up]time() |
* |
* Functions without the "get" prefix returns the best timestamp |
* we can produce in the given format. |
* |
* "bin" == struct bintime == seconds + 64 bit fraction of seconds. |
* "nano" == struct timespec == seconds + nanoseconds. |
* "micro" == struct timeval == seconds + microseconds. |
* |
* Functions containing "up" returns time relative to boot and |
* should be used for calculating time intervals. |
* |
* Functions without "up" returns UTC time. |
* |
* Functions with the "get" prefix returns a less precise result |
* much faster than the functions without "get" prefix and should |
* be used where a precision of 1/hz seconds is acceptable or where |
* performance is priority. (NB: "precision", _not_ "resolution" !) |
*/ |
void binuptime(struct bintime *bt); |
void nanouptime(struct timespec *tsp); |
void microuptime(struct timeval *tvp); |
static __inline sbintime_t |
sbinuptime(void) |
{ |
struct bintime _bt; |
binuptime(&_bt); |
return (bttosbt(_bt)); |
} |
void bintime(struct bintime *bt); |
void nanotime(struct timespec *tsp); |
void microtime(struct timeval *tvp); |
void getbinuptime(struct bintime *bt); |
void getnanouptime(struct timespec *tsp); |
void getmicrouptime(struct timeval *tvp); |
static __inline sbintime_t |
getsbinuptime(void) |
{ |
struct bintime _bt; |
getbinuptime(&_bt); |
return (bttosbt(_bt)); |
} |
void getbintime(struct bintime *bt); |
void getnanotime(struct timespec *tsp); |
void getmicrotime(struct timeval *tvp); |
/* Other functions */ |
int itimerdecr(struct itimerval *itp, int usec); |
int itimerfix(struct timeval *tv); |
int ppsratecheck(struct timeval *, int *, int); |
int ratecheck(struct timeval *, const struct timeval *); |
void timevaladd(struct timeval *t1, const struct timeval *t2); |
void timevalsub(struct timeval *t1, const struct timeval *t2); |
int tvtohz(struct timeval *tv); |
#define TC_DEFAULTPERC 5 |
#define BT2FREQ(bt) \ |
(((uint64_t)0x8000000000000000 + ((bt)->frac >> 2)) / \ |
((bt)->frac >> 1)) |
#define SBT2FREQ(sbt) ((SBT_1S + ((sbt) >> 1)) / (sbt)) |
#define FREQ2BT(freq, bt) \ |
{ \ |
(bt)->sec = 0; \ |
(bt)->frac = ((uint64_t)0x8000000000000000 / (freq)) << 1; \ |
} |
#define TIMESEL(sbt, sbt2) \ |
(((sbt2) >= sbt_timethreshold) ? \ |
((*(sbt) = getsbinuptime()), 1) : ((*(sbt) = sbinuptime()), 0)) |
#else /* !_KERNEL */ |
#include <time.h> |
#include <sys/cdefs.h> |
__BEGIN_DECLS |
int _EXFUN(setitimer, (int __which, const struct itimerval *__restrict __value, |
struct itimerval *__restrict __ovalue)); |
int _EXFUN(utimes, (const char *__path, const struct timeval *__tvp)); |
#if __BSD_VISIBLE |
int _EXFUN(adjtime, (const struct timeval *, struct timeval *)); |
int _EXFUN(futimes, (int, const struct timeval *)); |
int _EXFUN(futimesat, (int, const char *, const struct timeval [2])); |
int _EXFUN(lutimes, (const char *, const struct timeval *)); |
int _EXFUN(settimeofday, (const struct timeval *, const struct timezone *)); |
#endif |
#if __XSI_VISIBLE |
int _EXFUN(getitimer, (int __which, struct itimerval *__value)); |
int _EXFUN(gettimeofday, (struct timeval *__restrict __p, |
void *__restrict __tz)); |
int _EXFUN(settimeofday, (const struct timeval *, const struct timezone *)); |
int _EXFUN(utimes, (const char *__path, const struct timeval *__tvp)); |
int _EXFUN(getitimer, (int __which, struct itimerval *__value)); |
int _EXFUN(setitimer, (int __which, const struct itimerval *__restrict __value, |
struct itimerval *__restrict __ovalue)); |
#endif |
#ifdef __cplusplus |
} |
#ifdef _COMPILING_NEWLIB |
int _EXFUN(_gettimeofday, (struct timeval *__p, void *__tz)); |
#endif |
#endif /* _SYS_TIME_H_ */ |
__END_DECLS |
#endif /* !_KERNEL */ |
#endif /* !_SYS_TIME_H_ */ |
/contrib/sdk/sources/newlib/libc/include/sys/timespec.h |
---|
0,0 → 1,63 |
/*- |
* Copyright (c) 1982, 1986, 1993 |
* The Regents of the University of California. All rights reserved. |
* |
* 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. |
* 4. 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. |
* |
* @(#)time.h 8.5 (Berkeley) 5/4/95 |
* from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp |
* $FreeBSD$ |
*/ |
#ifndef _SYS_TIMESPEC_H_ |
#define _SYS_TIMESPEC_H_ |
#include <sys/cdefs.h> |
#include <sys/_timespec.h> |
#if __BSD_VISIBLE |
#define TIMEVAL_TO_TIMESPEC(tv, ts) \ |
do { \ |
(ts)->tv_sec = (tv)->tv_sec; \ |
(ts)->tv_nsec = (tv)->tv_usec * 1000; \ |
} while (0) |
#define TIMESPEC_TO_TIMEVAL(tv, ts) \ |
do { \ |
(tv)->tv_sec = (ts)->tv_sec; \ |
(tv)->tv_usec = (ts)->tv_nsec / 1000; \ |
} while (0) |
#endif /* __BSD_VISIBLE */ |
/* |
* Structure defined by POSIX.1b to be like a itimerval, but with |
* timespecs. Used in the timer_*() system calls. |
*/ |
struct itimerspec { |
struct timespec it_interval; |
struct timespec it_value; |
}; |
#endif /* _SYS_TIMESPEC_H_ */ |
/contrib/sdk/sources/newlib/libc/include/sys/tree.h |
---|
0,0 → 1,801 |
/* $NetBSD: tree.h,v 1.8 2004/03/28 19:38:30 provos Exp $ */ |
/* $OpenBSD: tree.h,v 1.7 2002/10/17 21:51:54 art Exp $ */ |
/* $FreeBSD$ */ |
/*- |
* Copyright 2002 Niels Provos <provos@citi.umich.edu> |
* All rights reserved. |
* |
* 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. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. |
*/ |
#ifndef _SYS_TREE_H_ |
#define _SYS_TREE_H_ |
#include <sys/cdefs.h> |
/* |
* This file defines data structures for different types of trees: |
* splay trees and red-black trees. |
* |
* A splay tree is a self-organizing data structure. Every operation |
* on the tree causes a splay to happen. The splay moves the requested |
* node to the root of the tree and partly rebalances it. |
* |
* This has the benefit that request locality causes faster lookups as |
* the requested nodes move to the top of the tree. On the other hand, |
* every lookup causes memory writes. |
* |
* The Balance Theorem bounds the total access time for m operations |
* and n inserts on an initially empty tree as O((m + n)lg n). The |
* amortized cost for a sequence of m accesses to a splay tree is O(lg n); |
* |
* A red-black tree is a binary search tree with the node color as an |
* extra attribute. It fulfills a set of conditions: |
* - every search path from the root to a leaf consists of the |
* same number of black nodes, |
* - each red node (except for the root) has a black parent, |
* - each leaf node is black. |
* |
* Every operation on a red-black tree is bounded as O(lg n). |
* The maximum height of a red-black tree is 2lg (n+1). |
*/ |
#define SPLAY_HEAD(name, type) \ |
struct name { \ |
struct type *sph_root; /* root of the tree */ \ |
} |
#define SPLAY_INITIALIZER(root) \ |
{ NULL } |
#define SPLAY_INIT(root) do { \ |
(root)->sph_root = NULL; \ |
} while (/*CONSTCOND*/ 0) |
#define SPLAY_ENTRY(type) \ |
struct { \ |
struct type *spe_left; /* left element */ \ |
struct type *spe_right; /* right element */ \ |
} |
#define SPLAY_LEFT(elm, field) (elm)->field.spe_left |
#define SPLAY_RIGHT(elm, field) (elm)->field.spe_right |
#define SPLAY_ROOT(head) (head)->sph_root |
#define SPLAY_EMPTY(head) (SPLAY_ROOT(head) == NULL) |
/* SPLAY_ROTATE_{LEFT,RIGHT} expect that tmp hold SPLAY_{RIGHT,LEFT} */ |
#define SPLAY_ROTATE_RIGHT(head, tmp, field) do { \ |
SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(tmp, field); \ |
SPLAY_RIGHT(tmp, field) = (head)->sph_root; \ |
(head)->sph_root = tmp; \ |
} while (/*CONSTCOND*/ 0) |
#define SPLAY_ROTATE_LEFT(head, tmp, field) do { \ |
SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(tmp, field); \ |
SPLAY_LEFT(tmp, field) = (head)->sph_root; \ |
(head)->sph_root = tmp; \ |
} while (/*CONSTCOND*/ 0) |
#define SPLAY_LINKLEFT(head, tmp, field) do { \ |
SPLAY_LEFT(tmp, field) = (head)->sph_root; \ |
tmp = (head)->sph_root; \ |
(head)->sph_root = SPLAY_LEFT((head)->sph_root, field); \ |
} while (/*CONSTCOND*/ 0) |
#define SPLAY_LINKRIGHT(head, tmp, field) do { \ |
SPLAY_RIGHT(tmp, field) = (head)->sph_root; \ |
tmp = (head)->sph_root; \ |
(head)->sph_root = SPLAY_RIGHT((head)->sph_root, field); \ |
} while (/*CONSTCOND*/ 0) |
#define SPLAY_ASSEMBLE(head, node, left, right, field) do { \ |
SPLAY_RIGHT(left, field) = SPLAY_LEFT((head)->sph_root, field); \ |
SPLAY_LEFT(right, field) = SPLAY_RIGHT((head)->sph_root, field);\ |
SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(node, field); \ |
SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(node, field); \ |
} while (/*CONSTCOND*/ 0) |
/* Generates prototypes and inline functions */ |
#define SPLAY_PROTOTYPE(name, type, field, cmp) \ |
void name##_SPLAY(struct name *, struct type *); \ |
void name##_SPLAY_MINMAX(struct name *, int); \ |
struct type *name##_SPLAY_INSERT(struct name *, struct type *); \ |
struct type *name##_SPLAY_REMOVE(struct name *, struct type *); \ |
\ |
/* Finds the node with the same key as elm */ \ |
static __inline struct type * \ |
name##_SPLAY_FIND(struct name *head, struct type *elm) \ |
{ \ |
if (SPLAY_EMPTY(head)) \ |
return(NULL); \ |
name##_SPLAY(head, elm); \ |
if ((cmp)(elm, (head)->sph_root) == 0) \ |
return (head->sph_root); \ |
return (NULL); \ |
} \ |
\ |
static __inline struct type * \ |
name##_SPLAY_NEXT(struct name *head, struct type *elm) \ |
{ \ |
name##_SPLAY(head, elm); \ |
if (SPLAY_RIGHT(elm, field) != NULL) { \ |
elm = SPLAY_RIGHT(elm, field); \ |
while (SPLAY_LEFT(elm, field) != NULL) { \ |
elm = SPLAY_LEFT(elm, field); \ |
} \ |
} else \ |
elm = NULL; \ |
return (elm); \ |
} \ |
\ |
static __inline struct type * \ |
name##_SPLAY_MIN_MAX(struct name *head, int val) \ |
{ \ |
name##_SPLAY_MINMAX(head, val); \ |
return (SPLAY_ROOT(head)); \ |
} |
/* Main splay operation. |
* Moves node close to the key of elm to top |
*/ |
#define SPLAY_GENERATE(name, type, field, cmp) \ |
struct type * \ |
name##_SPLAY_INSERT(struct name *head, struct type *elm) \ |
{ \ |
if (SPLAY_EMPTY(head)) { \ |
SPLAY_LEFT(elm, field) = SPLAY_RIGHT(elm, field) = NULL; \ |
} else { \ |
int __comp; \ |
name##_SPLAY(head, elm); \ |
__comp = (cmp)(elm, (head)->sph_root); \ |
if(__comp < 0) { \ |
SPLAY_LEFT(elm, field) = SPLAY_LEFT((head)->sph_root, field);\ |
SPLAY_RIGHT(elm, field) = (head)->sph_root; \ |
SPLAY_LEFT((head)->sph_root, field) = NULL; \ |
} else if (__comp > 0) { \ |
SPLAY_RIGHT(elm, field) = SPLAY_RIGHT((head)->sph_root, field);\ |
SPLAY_LEFT(elm, field) = (head)->sph_root; \ |
SPLAY_RIGHT((head)->sph_root, field) = NULL; \ |
} else \ |
return ((head)->sph_root); \ |
} \ |
(head)->sph_root = (elm); \ |
return (NULL); \ |
} \ |
\ |
struct type * \ |
name##_SPLAY_REMOVE(struct name *head, struct type *elm) \ |
{ \ |
struct type *__tmp; \ |
if (SPLAY_EMPTY(head)) \ |
return (NULL); \ |
name##_SPLAY(head, elm); \ |
if ((cmp)(elm, (head)->sph_root) == 0) { \ |
if (SPLAY_LEFT((head)->sph_root, field) == NULL) { \ |
(head)->sph_root = SPLAY_RIGHT((head)->sph_root, field);\ |
} else { \ |
__tmp = SPLAY_RIGHT((head)->sph_root, field); \ |
(head)->sph_root = SPLAY_LEFT((head)->sph_root, field);\ |
name##_SPLAY(head, elm); \ |
SPLAY_RIGHT((head)->sph_root, field) = __tmp; \ |
} \ |
return (elm); \ |
} \ |
return (NULL); \ |
} \ |
\ |
void \ |
name##_SPLAY(struct name *head, struct type *elm) \ |
{ \ |
struct type __node, *__left, *__right, *__tmp; \ |
int __comp; \ |
\ |
SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\ |
__left = __right = &__node; \ |
\ |
while ((__comp = (cmp)(elm, (head)->sph_root)) != 0) { \ |
if (__comp < 0) { \ |
__tmp = SPLAY_LEFT((head)->sph_root, field); \ |
if (__tmp == NULL) \ |
break; \ |
if ((cmp)(elm, __tmp) < 0){ \ |
SPLAY_ROTATE_RIGHT(head, __tmp, field); \ |
if (SPLAY_LEFT((head)->sph_root, field) == NULL)\ |
break; \ |
} \ |
SPLAY_LINKLEFT(head, __right, field); \ |
} else if (__comp > 0) { \ |
__tmp = SPLAY_RIGHT((head)->sph_root, field); \ |
if (__tmp == NULL) \ |
break; \ |
if ((cmp)(elm, __tmp) > 0){ \ |
SPLAY_ROTATE_LEFT(head, __tmp, field); \ |
if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\ |
break; \ |
} \ |
SPLAY_LINKRIGHT(head, __left, field); \ |
} \ |
} \ |
SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ |
} \ |
\ |
/* Splay with either the minimum or the maximum element \ |
* Used to find minimum or maximum element in tree. \ |
*/ \ |
void name##_SPLAY_MINMAX(struct name *head, int __comp) \ |
{ \ |
struct type __node, *__left, *__right, *__tmp; \ |
\ |
SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\ |
__left = __right = &__node; \ |
\ |
while (1) { \ |
if (__comp < 0) { \ |
__tmp = SPLAY_LEFT((head)->sph_root, field); \ |
if (__tmp == NULL) \ |
break; \ |
if (__comp < 0){ \ |
SPLAY_ROTATE_RIGHT(head, __tmp, field); \ |
if (SPLAY_LEFT((head)->sph_root, field) == NULL)\ |
break; \ |
} \ |
SPLAY_LINKLEFT(head, __right, field); \ |
} else if (__comp > 0) { \ |
__tmp = SPLAY_RIGHT((head)->sph_root, field); \ |
if (__tmp == NULL) \ |
break; \ |
if (__comp > 0) { \ |
SPLAY_ROTATE_LEFT(head, __tmp, field); \ |
if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\ |
break; \ |
} \ |
SPLAY_LINKRIGHT(head, __left, field); \ |
} \ |
} \ |
SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ |
} |
#define SPLAY_NEGINF -1 |
#define SPLAY_INF 1 |
#define SPLAY_INSERT(name, x, y) name##_SPLAY_INSERT(x, y) |
#define SPLAY_REMOVE(name, x, y) name##_SPLAY_REMOVE(x, y) |
#define SPLAY_FIND(name, x, y) name##_SPLAY_FIND(x, y) |
#define SPLAY_NEXT(name, x, y) name##_SPLAY_NEXT(x, y) |
#define SPLAY_MIN(name, x) (SPLAY_EMPTY(x) ? NULL \ |
: name##_SPLAY_MIN_MAX(x, SPLAY_NEGINF)) |
#define SPLAY_MAX(name, x) (SPLAY_EMPTY(x) ? NULL \ |
: name##_SPLAY_MIN_MAX(x, SPLAY_INF)) |
#define SPLAY_FOREACH(x, name, head) \ |
for ((x) = SPLAY_MIN(name, head); \ |
(x) != NULL; \ |
(x) = SPLAY_NEXT(name, head, x)) |
/* Macros that define a red-black tree */ |
#define RB_HEAD(name, type) \ |
struct name { \ |
struct type *rbh_root; /* root of the tree */ \ |
} |
#define RB_INITIALIZER(root) \ |
{ NULL } |
#define RB_INIT(root) do { \ |
(root)->rbh_root = NULL; \ |
} while (/*CONSTCOND*/ 0) |
#define RB_BLACK 0 |
#define RB_RED 1 |
#define RB_ENTRY(type) \ |
struct { \ |
struct type *rbe_left; /* left element */ \ |
struct type *rbe_right; /* right element */ \ |
struct type *rbe_parent; /* parent element */ \ |
int rbe_color; /* node color */ \ |
} |
#define RB_LEFT(elm, field) (elm)->field.rbe_left |
#define RB_RIGHT(elm, field) (elm)->field.rbe_right |
#define RB_PARENT(elm, field) (elm)->field.rbe_parent |
#define RB_COLOR(elm, field) (elm)->field.rbe_color |
#define RB_ROOT(head) (head)->rbh_root |
#define RB_EMPTY(head) (RB_ROOT(head) == NULL) |
#define RB_SET(elm, parent, field) do { \ |
RB_PARENT(elm, field) = parent; \ |
RB_LEFT(elm, field) = RB_RIGHT(elm, field) = NULL; \ |
RB_COLOR(elm, field) = RB_RED; \ |
} while (/*CONSTCOND*/ 0) |
#define RB_SET_BLACKRED(black, red, field) do { \ |
RB_COLOR(black, field) = RB_BLACK; \ |
RB_COLOR(red, field) = RB_RED; \ |
} while (/*CONSTCOND*/ 0) |
#ifndef RB_AUGMENT |
#define RB_AUGMENT(x) do {} while (0) |
#endif |
#define RB_ROTATE_LEFT(head, elm, tmp, field) do { \ |
(tmp) = RB_RIGHT(elm, field); \ |
if ((RB_RIGHT(elm, field) = RB_LEFT(tmp, field)) != NULL) { \ |
RB_PARENT(RB_LEFT(tmp, field), field) = (elm); \ |
} \ |
RB_AUGMENT(elm); \ |
if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \ |
if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \ |
RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \ |
else \ |
RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \ |
} else \ |
(head)->rbh_root = (tmp); \ |
RB_LEFT(tmp, field) = (elm); \ |
RB_PARENT(elm, field) = (tmp); \ |
RB_AUGMENT(tmp); \ |
if ((RB_PARENT(tmp, field))) \ |
RB_AUGMENT(RB_PARENT(tmp, field)); \ |
} while (/*CONSTCOND*/ 0) |
#define RB_ROTATE_RIGHT(head, elm, tmp, field) do { \ |
(tmp) = RB_LEFT(elm, field); \ |
if ((RB_LEFT(elm, field) = RB_RIGHT(tmp, field)) != NULL) { \ |
RB_PARENT(RB_RIGHT(tmp, field), field) = (elm); \ |
} \ |
RB_AUGMENT(elm); \ |
if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \ |
if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \ |
RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \ |
else \ |
RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \ |
} else \ |
(head)->rbh_root = (tmp); \ |
RB_RIGHT(tmp, field) = (elm); \ |
RB_PARENT(elm, field) = (tmp); \ |
RB_AUGMENT(tmp); \ |
if ((RB_PARENT(tmp, field))) \ |
RB_AUGMENT(RB_PARENT(tmp, field)); \ |
} while (/*CONSTCOND*/ 0) |
/* Generates prototypes and inline functions */ |
#define RB_PROTOTYPE(name, type, field, cmp) \ |
RB_PROTOTYPE_INTERNAL(name, type, field, cmp,) |
#define RB_PROTOTYPE_STATIC(name, type, field, cmp) \ |
RB_PROTOTYPE_INTERNAL(name, type, field, cmp, __unused static) |
#define RB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr) \ |
RB_PROTOTYPE_INSERT_COLOR(name, type, attr); \ |
RB_PROTOTYPE_REMOVE_COLOR(name, type, attr); \ |
RB_PROTOTYPE_INSERT(name, type, attr); \ |
RB_PROTOTYPE_REMOVE(name, type, attr); \ |
RB_PROTOTYPE_FIND(name, type, attr); \ |
RB_PROTOTYPE_NFIND(name, type, attr); \ |
RB_PROTOTYPE_NEXT(name, type, attr); \ |
RB_PROTOTYPE_PREV(name, type, attr); \ |
RB_PROTOTYPE_MINMAX(name, type, attr); |
#define RB_PROTOTYPE_INSERT_COLOR(name, type, attr) \ |
attr void name##_RB_INSERT_COLOR(struct name *, struct type *) |
#define RB_PROTOTYPE_REMOVE_COLOR(name, type, attr) \ |
attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *) |
#define RB_PROTOTYPE_REMOVE(name, type, attr) \ |
attr struct type *name##_RB_REMOVE(struct name *, struct type *) |
#define RB_PROTOTYPE_INSERT(name, type, attr) \ |
attr struct type *name##_RB_INSERT(struct name *, struct type *) |
#define RB_PROTOTYPE_FIND(name, type, attr) \ |
attr struct type *name##_RB_FIND(struct name *, struct type *) |
#define RB_PROTOTYPE_NFIND(name, type, attr) \ |
attr struct type *name##_RB_NFIND(struct name *, struct type *) |
#define RB_PROTOTYPE_NEXT(name, type, attr) \ |
attr struct type *name##_RB_NEXT(struct type *) |
#define RB_PROTOTYPE_PREV(name, type, attr) \ |
attr struct type *name##_RB_PREV(struct type *) |
#define RB_PROTOTYPE_MINMAX(name, type, attr) \ |
attr struct type *name##_RB_MINMAX(struct name *, int) |
/* Main rb operation. |
* Moves node close to the key of elm to top |
*/ |
#define RB_GENERATE(name, type, field, cmp) \ |
RB_GENERATE_INTERNAL(name, type, field, cmp,) |
#define RB_GENERATE_STATIC(name, type, field, cmp) \ |
RB_GENERATE_INTERNAL(name, type, field, cmp, __unused static) |
#define RB_GENERATE_INTERNAL(name, type, field, cmp, attr) \ |
RB_GENERATE_INSERT_COLOR(name, type, field, attr) \ |
RB_GENERATE_REMOVE_COLOR(name, type, field, attr) \ |
RB_GENERATE_INSERT(name, type, field, cmp, attr) \ |
RB_GENERATE_REMOVE(name, type, field, attr) \ |
RB_GENERATE_FIND(name, type, field, cmp, attr) \ |
RB_GENERATE_NFIND(name, type, field, cmp, attr) \ |
RB_GENERATE_NEXT(name, type, field, attr) \ |
RB_GENERATE_PREV(name, type, field, attr) \ |
RB_GENERATE_MINMAX(name, type, field, attr) |
#define RB_GENERATE_INSERT_COLOR(name, type, field, attr) \ |
attr void \ |
name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \ |
{ \ |
struct type *parent, *gparent, *tmp; \ |
while ((parent = RB_PARENT(elm, field)) != NULL && \ |
RB_COLOR(parent, field) == RB_RED) { \ |
gparent = RB_PARENT(parent, field); \ |
if (parent == RB_LEFT(gparent, field)) { \ |
tmp = RB_RIGHT(gparent, field); \ |
if (tmp && RB_COLOR(tmp, field) == RB_RED) { \ |
RB_COLOR(tmp, field) = RB_BLACK; \ |
RB_SET_BLACKRED(parent, gparent, field);\ |
elm = gparent; \ |
continue; \ |
} \ |
if (RB_RIGHT(parent, field) == elm) { \ |
RB_ROTATE_LEFT(head, parent, tmp, field);\ |
tmp = parent; \ |
parent = elm; \ |
elm = tmp; \ |
} \ |
RB_SET_BLACKRED(parent, gparent, field); \ |
RB_ROTATE_RIGHT(head, gparent, tmp, field); \ |
} else { \ |
tmp = RB_LEFT(gparent, field); \ |
if (tmp && RB_COLOR(tmp, field) == RB_RED) { \ |
RB_COLOR(tmp, field) = RB_BLACK; \ |
RB_SET_BLACKRED(parent, gparent, field);\ |
elm = gparent; \ |
continue; \ |
} \ |
if (RB_LEFT(parent, field) == elm) { \ |
RB_ROTATE_RIGHT(head, parent, tmp, field);\ |
tmp = parent; \ |
parent = elm; \ |
elm = tmp; \ |
} \ |
RB_SET_BLACKRED(parent, gparent, field); \ |
RB_ROTATE_LEFT(head, gparent, tmp, field); \ |
} \ |
} \ |
RB_COLOR(head->rbh_root, field) = RB_BLACK; \ |
} |
#define RB_GENERATE_REMOVE_COLOR(name, type, field, attr) \ |
attr void \ |
name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) \ |
{ \ |
struct type *tmp; \ |
while ((elm == NULL || RB_COLOR(elm, field) == RB_BLACK) && \ |
elm != RB_ROOT(head)) { \ |
if (RB_LEFT(parent, field) == elm) { \ |
tmp = RB_RIGHT(parent, field); \ |
if (RB_COLOR(tmp, field) == RB_RED) { \ |
RB_SET_BLACKRED(tmp, parent, field); \ |
RB_ROTATE_LEFT(head, parent, tmp, field);\ |
tmp = RB_RIGHT(parent, field); \ |
} \ |
if ((RB_LEFT(tmp, field) == NULL || \ |
RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\ |
(RB_RIGHT(tmp, field) == NULL || \ |
RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\ |
RB_COLOR(tmp, field) = RB_RED; \ |
elm = parent; \ |
parent = RB_PARENT(elm, field); \ |
} else { \ |
if (RB_RIGHT(tmp, field) == NULL || \ |
RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK) {\ |
struct type *oleft; \ |
if ((oleft = RB_LEFT(tmp, field)) \ |
!= NULL) \ |
RB_COLOR(oleft, field) = RB_BLACK;\ |
RB_COLOR(tmp, field) = RB_RED; \ |
RB_ROTATE_RIGHT(head, tmp, oleft, field);\ |
tmp = RB_RIGHT(parent, field); \ |
} \ |
RB_COLOR(tmp, field) = RB_COLOR(parent, field);\ |
RB_COLOR(parent, field) = RB_BLACK; \ |
if (RB_RIGHT(tmp, field)) \ |
RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK;\ |
RB_ROTATE_LEFT(head, parent, tmp, field);\ |
elm = RB_ROOT(head); \ |
break; \ |
} \ |
} else { \ |
tmp = RB_LEFT(parent, field); \ |
if (RB_COLOR(tmp, field) == RB_RED) { \ |
RB_SET_BLACKRED(tmp, parent, field); \ |
RB_ROTATE_RIGHT(head, parent, tmp, field);\ |
tmp = RB_LEFT(parent, field); \ |
} \ |
if ((RB_LEFT(tmp, field) == NULL || \ |
RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\ |
(RB_RIGHT(tmp, field) == NULL || \ |
RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\ |
RB_COLOR(tmp, field) = RB_RED; \ |
elm = parent; \ |
parent = RB_PARENT(elm, field); \ |
} else { \ |
if (RB_LEFT(tmp, field) == NULL || \ |
RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) {\ |
struct type *oright; \ |
if ((oright = RB_RIGHT(tmp, field)) \ |
!= NULL) \ |
RB_COLOR(oright, field) = RB_BLACK;\ |
RB_COLOR(tmp, field) = RB_RED; \ |
RB_ROTATE_LEFT(head, tmp, oright, field);\ |
tmp = RB_LEFT(parent, field); \ |
} \ |
RB_COLOR(tmp, field) = RB_COLOR(parent, field);\ |
RB_COLOR(parent, field) = RB_BLACK; \ |
if (RB_LEFT(tmp, field)) \ |
RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK;\ |
RB_ROTATE_RIGHT(head, parent, tmp, field);\ |
elm = RB_ROOT(head); \ |
break; \ |
} \ |
} \ |
} \ |
if (elm) \ |
RB_COLOR(elm, field) = RB_BLACK; \ |
} |
#define RB_GENERATE_REMOVE(name, type, field, attr) \ |
attr struct type * \ |
name##_RB_REMOVE(struct name *head, struct type *elm) \ |
{ \ |
struct type *child, *parent, *old = elm; \ |
int color; \ |
if (RB_LEFT(elm, field) == NULL) \ |
child = RB_RIGHT(elm, field); \ |
else if (RB_RIGHT(elm, field) == NULL) \ |
child = RB_LEFT(elm, field); \ |
else { \ |
struct type *left; \ |
elm = RB_RIGHT(elm, field); \ |
while ((left = RB_LEFT(elm, field)) != NULL) \ |
elm = left; \ |
child = RB_RIGHT(elm, field); \ |
parent = RB_PARENT(elm, field); \ |
color = RB_COLOR(elm, field); \ |
if (child) \ |
RB_PARENT(child, field) = parent; \ |
if (parent) { \ |
if (RB_LEFT(parent, field) == elm) \ |
RB_LEFT(parent, field) = child; \ |
else \ |
RB_RIGHT(parent, field) = child; \ |
RB_AUGMENT(parent); \ |
} else \ |
RB_ROOT(head) = child; \ |
if (RB_PARENT(elm, field) == old) \ |
parent = elm; \ |
(elm)->field = (old)->field; \ |
if (RB_PARENT(old, field)) { \ |
if (RB_LEFT(RB_PARENT(old, field), field) == old)\ |
RB_LEFT(RB_PARENT(old, field), field) = elm;\ |
else \ |
RB_RIGHT(RB_PARENT(old, field), field) = elm;\ |
RB_AUGMENT(RB_PARENT(old, field)); \ |
} else \ |
RB_ROOT(head) = elm; \ |
RB_PARENT(RB_LEFT(old, field), field) = elm; \ |
if (RB_RIGHT(old, field)) \ |
RB_PARENT(RB_RIGHT(old, field), field) = elm; \ |
if (parent) { \ |
left = parent; \ |
do { \ |
RB_AUGMENT(left); \ |
} while ((left = RB_PARENT(left, field)) != NULL); \ |
} \ |
goto color; \ |
} \ |
parent = RB_PARENT(elm, field); \ |
color = RB_COLOR(elm, field); \ |
if (child) \ |
RB_PARENT(child, field) = parent; \ |
if (parent) { \ |
if (RB_LEFT(parent, field) == elm) \ |
RB_LEFT(parent, field) = child; \ |
else \ |
RB_RIGHT(parent, field) = child; \ |
RB_AUGMENT(parent); \ |
} else \ |
RB_ROOT(head) = child; \ |
color: \ |
if (color == RB_BLACK) \ |
name##_RB_REMOVE_COLOR(head, parent, child); \ |
return (old); \ |
} \ |
#define RB_GENERATE_INSERT(name, type, field, cmp, attr) \ |
/* Inserts a node into the RB tree */ \ |
attr struct type * \ |
name##_RB_INSERT(struct name *head, struct type *elm) \ |
{ \ |
struct type *tmp; \ |
struct type *parent = NULL; \ |
int comp = 0; \ |
tmp = RB_ROOT(head); \ |
while (tmp) { \ |
parent = tmp; \ |
comp = (cmp)(elm, parent); \ |
if (comp < 0) \ |
tmp = RB_LEFT(tmp, field); \ |
else if (comp > 0) \ |
tmp = RB_RIGHT(tmp, field); \ |
else \ |
return (tmp); \ |
} \ |
RB_SET(elm, parent, field); \ |
if (parent != NULL) { \ |
if (comp < 0) \ |
RB_LEFT(parent, field) = elm; \ |
else \ |
RB_RIGHT(parent, field) = elm; \ |
RB_AUGMENT(parent); \ |
} else \ |
RB_ROOT(head) = elm; \ |
name##_RB_INSERT_COLOR(head, elm); \ |
return (NULL); \ |
} |
#define RB_GENERATE_FIND(name, type, field, cmp, attr) \ |
/* Finds the node with the same key as elm */ \ |
attr struct type * \ |
name##_RB_FIND(struct name *head, struct type *elm) \ |
{ \ |
struct type *tmp = RB_ROOT(head); \ |
int comp; \ |
while (tmp) { \ |
comp = cmp(elm, tmp); \ |
if (comp < 0) \ |
tmp = RB_LEFT(tmp, field); \ |
else if (comp > 0) \ |
tmp = RB_RIGHT(tmp, field); \ |
else \ |
return (tmp); \ |
} \ |
return (NULL); \ |
} |
#define RB_GENERATE_NFIND(name, type, field, cmp, attr) \ |
/* Finds the first node greater than or equal to the search key */ \ |
attr struct type * \ |
name##_RB_NFIND(struct name *head, struct type *elm) \ |
{ \ |
struct type *tmp = RB_ROOT(head); \ |
struct type *res = NULL; \ |
int comp; \ |
while (tmp) { \ |
comp = cmp(elm, tmp); \ |
if (comp < 0) { \ |
res = tmp; \ |
tmp = RB_LEFT(tmp, field); \ |
} \ |
else if (comp > 0) \ |
tmp = RB_RIGHT(tmp, field); \ |
else \ |
return (tmp); \ |
} \ |
return (res); \ |
} |
#define RB_GENERATE_NEXT(name, type, field, attr) \ |
/* ARGSUSED */ \ |
attr struct type * \ |
name##_RB_NEXT(struct type *elm) \ |
{ \ |
if (RB_RIGHT(elm, field)) { \ |
elm = RB_RIGHT(elm, field); \ |
while (RB_LEFT(elm, field)) \ |
elm = RB_LEFT(elm, field); \ |
} else { \ |
if (RB_PARENT(elm, field) && \ |
(elm == RB_LEFT(RB_PARENT(elm, field), field))) \ |
elm = RB_PARENT(elm, field); \ |
else { \ |
while (RB_PARENT(elm, field) && \ |
(elm == RB_RIGHT(RB_PARENT(elm, field), field)))\ |
elm = RB_PARENT(elm, field); \ |
elm = RB_PARENT(elm, field); \ |
} \ |
} \ |
return (elm); \ |
} |
#define RB_GENERATE_PREV(name, type, field, attr) \ |
/* ARGSUSED */ \ |
attr struct type * \ |
name##_RB_PREV(struct type *elm) \ |
{ \ |
if (RB_LEFT(elm, field)) { \ |
elm = RB_LEFT(elm, field); \ |
while (RB_RIGHT(elm, field)) \ |
elm = RB_RIGHT(elm, field); \ |
} else { \ |
if (RB_PARENT(elm, field) && \ |
(elm == RB_RIGHT(RB_PARENT(elm, field), field))) \ |
elm = RB_PARENT(elm, field); \ |
else { \ |
while (RB_PARENT(elm, field) && \ |
(elm == RB_LEFT(RB_PARENT(elm, field), field)))\ |
elm = RB_PARENT(elm, field); \ |
elm = RB_PARENT(elm, field); \ |
} \ |
} \ |
return (elm); \ |
} |
#define RB_GENERATE_MINMAX(name, type, field, attr) \ |
attr struct type * \ |
name##_RB_MINMAX(struct name *head, int val) \ |
{ \ |
struct type *tmp = RB_ROOT(head); \ |
struct type *parent = NULL; \ |
while (tmp) { \ |
parent = tmp; \ |
if (val < 0) \ |
tmp = RB_LEFT(tmp, field); \ |
else \ |
tmp = RB_RIGHT(tmp, field); \ |
} \ |
return (parent); \ |
} |
#define RB_NEGINF -1 |
#define RB_INF 1 |
#define RB_INSERT(name, x, y) name##_RB_INSERT(x, y) |
#define RB_REMOVE(name, x, y) name##_RB_REMOVE(x, y) |
#define RB_FIND(name, x, y) name##_RB_FIND(x, y) |
#define RB_NFIND(name, x, y) name##_RB_NFIND(x, y) |
#define RB_NEXT(name, x, y) name##_RB_NEXT(y) |
#define RB_PREV(name, x, y) name##_RB_PREV(y) |
#define RB_MIN(name, x) name##_RB_MINMAX(x, RB_NEGINF) |
#define RB_MAX(name, x) name##_RB_MINMAX(x, RB_INF) |
#define RB_FOREACH(x, name, head) \ |
for ((x) = RB_MIN(name, head); \ |
(x) != NULL; \ |
(x) = name##_RB_NEXT(x)) |
#define RB_FOREACH_FROM(x, name, y) \ |
for ((x) = (y); \ |
((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \ |
(x) = (y)) |
#define RB_FOREACH_SAFE(x, name, head, y) \ |
for ((x) = RB_MIN(name, head); \ |
((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \ |
(x) = (y)) |
#define RB_FOREACH_REVERSE(x, name, head) \ |
for ((x) = RB_MAX(name, head); \ |
(x) != NULL; \ |
(x) = name##_RB_PREV(x)) |
#define RB_FOREACH_REVERSE_FROM(x, name, y) \ |
for ((x) = (y); \ |
((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \ |
(x) = (y)) |
#define RB_FOREACH_REVERSE_SAFE(x, name, head, y) \ |
for ((x) = RB_MAX(name, head); \ |
((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \ |
(x) = (y)) |
#endif /* _SYS_TREE_H_ */ |
/contrib/sdk/sources/newlib/libc/include/sys/types.h |
---|
18,6 → 18,7 |
#ifndef _SYS_TYPES_H |
#include <_ansi.h> |
# include <sys/cdefs.h> |
#ifndef __INTTYPES_DEFINED__ |
#define __INTTYPES_DEFINED__ |
59,6 → 60,7 |
#define _SYS_TYPES_H |
#include <sys/_types.h> |
#include <sys/_stdint.h> |
#ifdef __i386__ |
#if defined (GO32) || defined (__MSDOS__) |
82,7 → 84,7 |
#define _ST_INT32 |
#endif |
# ifndef _POSIX_SOURCE |
# if __BSD_VISIBLE |
# define physadr physadr_t |
# define quad quad_t |
111,7 → 113,7 |
typedef unsigned short ushort; /* System V compatibility */ |
typedef unsigned int uint; /* System V compatibility */ |
typedef unsigned long ulong; /* System V compatibility */ |
# endif /*!_POSIX_SOURCE */ |
# endif /*__BSD_VISIBLE */ |
#ifndef __clock_t_defined |
typedef _CLOCK_T_ clock_t; |
123,21 → 125,6 |
#define __time_t_defined |
#endif |
#ifndef __timespec_defined |
#define __timespec_defined |
/* Time Value Specification Structures, P1003.1b-1993, p. 261 */ |
struct timespec { |
time_t tv_sec; /* Seconds */ |
long tv_nsec; /* Nanoseconds */ |
}; |
#endif |
struct itimerspec { |
struct timespec it_interval; /* Timer period */ |
struct timespec it_value; /* Timer expiration */ |
}; |
#ifndef __daddr_t_defined |
typedef long daddr_t; |
#define __daddr_t_defined |
221,52 → 208,6 |
typedef unsigned short nlink_t; |
/* We don't define fd_set and friends if we are compiling POSIX |
source, or if we have included (or may include as indicated |
by __USE_W32_SOCKETS) the W32api winsock[2].h header which |
defines Windows versions of them. Note that a program which |
includes the W32api winsock[2].h header must know what it is doing; |
it must not call the cygwin32 select function. |
*/ |
# if !(defined (_POSIX_SOURCE) || defined (_WINSOCK_H) || defined (_WINSOCKAPI_) || defined (__USE_W32_SOCKETS)) |
# define _SYS_TYPES_FD_SET |
# define NBBY 8 /* number of bits in a byte */ |
/* |
* Select uses bit masks of file descriptors in longs. |
* These macros manipulate such bit fields (the filesystem macros use chars). |
* FD_SETSIZE may be defined by the user, but the default here |
* should be >= NOFILE (param.h). |
*/ |
# ifndef FD_SETSIZE |
# define FD_SETSIZE 64 |
# endif |
typedef long fd_mask; |
# define NFDBITS (sizeof (fd_mask) * NBBY) /* bits per mask */ |
# ifndef howmany |
# define howmany(x,y) (((x)+((y)-1))/(y)) |
# endif |
/* We use a macro for fd_set so that including Sockets.h afterwards |
can work. */ |
typedef struct _types_fd_set { |
fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)]; |
} _types_fd_set; |
#define fd_set _types_fd_set |
# define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1L << ((n) % NFDBITS))) |
# define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1L << ((n) % NFDBITS))) |
# define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1L << ((n) % NFDBITS))) |
# define FD_ZERO(p) (__extension__ (void)({ \ |
size_t __i; \ |
char *__tmp = (char *)p; \ |
for (__i = 0; __i < sizeof (*(p)); ++__i) \ |
*__tmp++ = 0; \ |
})) |
# endif /* !(defined (_POSIX_SOURCE) || defined (_WINSOCK_H) || defined (_WINSOCKAPI_) || defined (__USE_W32_SOCKETS)) */ |
#undef __MS_types__ |
#undef _ST_INT32 |
282,8 → 223,14 |
#endif |
typedef unsigned long useconds_t; |
typedef long suseconds_t; |
#ifndef _SUSECONDS_T_DECLARED |
typedef __suseconds_t suseconds_t; |
#define _SUSECONDS_T_DECLARED |
#endif |
typedef __int64_t sbintime_t; |
#include <sys/features.h> |
/contrib/sdk/sources/newlib/libc/include/sys/unistd.h |
---|
6,15 → 6,16 |
#endif |
#include <_ansi.h> |
#define __need_size_t |
#define __need_ptrdiff_t |
#include <sys/cdefs.h> |
#include <sys/types.h> |
#include <sys/_types.h> |
#define __need_size_t |
#define __need_ptrdiff_t |
#include <stddef.h> |
extern char **environ; |
void _EXFUN(_exit, (int __status ) _ATTRIBUTE ((noreturn))); |
void _EXFUN(_exit, (int __status ) _ATTRIBUTE ((__noreturn__))); |
int _EXFUN(access,(const char *__path, int __amode )); |
unsigned _EXFUN(alarm, (unsigned __secs )); |
54,6 → 55,8 |
int _EXFUN(execvp, (const char *__file, char * const __argv[] )); |
#if defined(__CYGWIN__) |
int _EXFUN(execvpe, (const char *__file, char * const __argv[], char * const __envp[] )); |
#endif |
#if __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE || defined(__CYGWIN__) |
int _EXFUN(faccessat, (int __dirfd, const char *__path, int __mode, int __flags)); |
#endif |
#if defined(__CYGWIN__) || defined(__rtems__) || defined(__SPU__) |
63,8 → 66,10 |
#if !defined(__INSIDE_CYGWIN__) |
int _EXFUN(fchown, (int __fildes, uid_t __owner, gid_t __group )); |
#endif |
#if __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE || defined(__CYGWIN__) |
int _EXFUN(fchownat, (int __dirfd, const char *__path, uid_t __owner, gid_t __group, int __flags)); |
#endif |
#if defined(__CYGWIN__) |
int _EXFUN(fchownat, (int __dirfd, const char *__path, uid_t __owner, gid_t __group, int __flags)); |
int _EXFUN(fexecve, (int __fd, char * const __argv[], char * const __envp[] )); |
#endif |
pid_t _EXFUN(fork, (void )); |
112,11 → 117,14 |
int _EXFUN(iruserok, (unsigned long raddr, int superuser, const char *ruser, const char *luser)); |
#endif |
int _EXFUN(isatty, (int __fildes )); |
#if __BSD_VISIBLE |
int _EXFUN(issetugid, (void)); |
#endif |
#if !defined(__INSIDE_CYGWIN__) |
int _EXFUN(lchown, (const char *__path, uid_t __owner, gid_t __group )); |
#endif |
int _EXFUN(link, (const char *__path1, const char *__path2 )); |
#if defined(__CYGWIN__) |
#if __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE || defined(__CYGWIN__) |
int _EXFUN(linkat, (int __dirfd1, const char *__path1, int __dirfd2, const char *__path2, int __flags )); |
#endif |
int _EXFUN(nice, (int __nice_value )); |
161,6 → 169,9 |
#if defined(__CYGWIN__) |
int _EXFUN(setgroups, (int ngroups, const gid_t *grouplist )); |
#endif |
#if __BSD_VISIBLE || (defined(_XOPEN_SOURCE) && __XSI_VISIBLE < 500) |
int _EXFUN(sethostname, (const char *, size_t)); |
#endif |
int _EXFUN(setpgid, (pid_t __pid, pid_t __pgid )); |
int _EXFUN(setpgrp, (void )); |
#if defined(__CYGWIN__) && !defined(__INSIDE_CYGWIN__) |
246,12 → 257,12 |
ssize_t _EXFUN(readlink, (const char *__restrict __path, |
char *__restrict __buf, size_t __buflen)); |
#if defined(__CYGWIN__) |
#if __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE || defined(__CYGWIN__) |
ssize_t _EXFUN(readlinkat, (int __dirfd1, const char *__restrict __path, |
char *__restrict __buf, size_t __buflen)); |
#endif |
int _EXFUN(symlink, (const char *__name1, const char *__name2)); |
#if defined(__CYGWIN__) |
#if __POSIX_VISIBLE >= 200809 || __BSD_VISIBLE || defined(__CYGWIN__) |
int _EXFUN(symlinkat, (const char *, int, const char *)); |
int _EXFUN(unlinkat, (int, const char *, int)); |
#endif |
414,6 → 425,21 |
#define _SC_THREAD_ROBUST_PRIO_INHERIT 122 |
#define _SC_THREAD_ROBUST_PRIO_PROTECT 123 |
#define _SC_XOPEN_UUCP 124 |
#define _SC_LEVEL1_ICACHE_SIZE 125 |
#define _SC_LEVEL1_ICACHE_ASSOC 126 |
#define _SC_LEVEL1_ICACHE_LINESIZE 127 |
#define _SC_LEVEL1_DCACHE_SIZE 128 |
#define _SC_LEVEL1_DCACHE_ASSOC 129 |
#define _SC_LEVEL1_DCACHE_LINESIZE 130 |
#define _SC_LEVEL2_CACHE_SIZE 131 |
#define _SC_LEVEL2_CACHE_ASSOC 132 |
#define _SC_LEVEL2_CACHE_LINESIZE 133 |
#define _SC_LEVEL3_CACHE_SIZE 134 |
#define _SC_LEVEL3_CACHE_ASSOC 135 |
#define _SC_LEVEL3_CACHE_LINESIZE 136 |
#define _SC_LEVEL4_CACHE_SIZE 137 |
#define _SC_LEVEL4_CACHE_ASSOC 138 |
#define _SC_LEVEL4_CACHE_LINESIZE 139 |
/* |
* pathconf values per IEEE Std 1003.1, 2008 Edition |
/contrib/sdk/sources/newlib/libc/include/sys/wait.h |
---|
11,7 → 11,7 |
#define WUNTRACED 2 |
/* A status looks like: |
<2 bytes info> <2 bytes code> |
<1 byte info> <1 byte code> |
<code> == 0, child has exited, info is the exit value |
<code> == 1..7e, child has exited, info is the signal number. |
/contrib/sdk/sources/newlib/libc/include/threads.h |
---|
0,0 → 1,93 |
/*- |
* Copyright (c) 2011 Ed Schouten <ed@FreeBSD.org> |
* All rights reserved. |
* |
* 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. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. |
*/ |
#ifndef _THREADS_H_ |
#define _THREADS_H_ |
#include <machine/_threads.h> |
#include <time.h> |
typedef void (*tss_dtor_t)(void *); |
typedef int (*thrd_start_t)(void *); |
enum { |
mtx_plain = 0x1, |
mtx_recursive = 0x2, |
mtx_timed = 0x4 |
}; |
enum { |
thrd_busy = 1, |
thrd_error = 2, |
thrd_nomem = 3, |
thrd_success = 4, |
thrd_timedout = 5 |
}; |
#if !defined(__cplusplus) || __cplusplus < 201103L |
#define thread_local _Thread_local |
#endif |
__BEGIN_DECLS |
void call_once(once_flag *, void (*)(void)); |
int cnd_broadcast(cnd_t *); |
void cnd_destroy(cnd_t *); |
int cnd_init(cnd_t *); |
int cnd_signal(cnd_t *); |
int cnd_timedwait(cnd_t *__restrict, mtx_t *__restrict __mtx, |
const struct timespec *__restrict) |
__requires_exclusive(*__mtx); |
int cnd_wait(cnd_t *, mtx_t *__mtx) |
__requires_exclusive(*__mtx); |
void mtx_destroy(mtx_t *__mtx) |
__requires_unlocked(*__mtx); |
int mtx_init(mtx_t *__mtx, int) |
__requires_unlocked(*__mtx); |
int mtx_lock(mtx_t *__mtx) |
__locks_exclusive(*__mtx); |
int mtx_timedlock(mtx_t *__restrict __mtx, |
const struct timespec *__restrict) |
__trylocks_exclusive(thrd_success, *__mtx); |
int mtx_trylock(mtx_t *__mtx) |
__trylocks_exclusive(thrd_success, *__mtx); |
int mtx_unlock(mtx_t *__mtx) |
__unlocks(*__mtx); |
int thrd_create(thrd_t *, thrd_start_t, void *); |
thrd_t thrd_current(void); |
int thrd_detach(thrd_t); |
int thrd_equal(thrd_t, thrd_t); |
_Noreturn void |
thrd_exit(int); |
int thrd_join(thrd_t, int *); |
int thrd_sleep(const struct timespec *, struct timespec *); |
void thrd_yield(void); |
int tss_create(tss_t *, tss_dtor_t); |
void tss_delete(tss_t); |
void * tss_get(tss_t); |
int tss_set(tss_t, void *); |
__END_DECLS |
#endif /* !_THREADS_H_ */ |
/contrib/sdk/sources/newlib/libc/include/time.h |
---|
25,6 → 25,7 |
#define CLK_TCK CLOCKS_PER_SEC |
#include <sys/types.h> |
#include <sys/timespec.h> |
_BEGIN_STD_C |
39,6 → 40,12 |
int tm_wday; |
int tm_yday; |
int tm_isdst; |
#ifdef __TM_GMTOFF |
long __TM_GMTOFF; |
#endif |
#ifdef __TM_ZONE |
const char *__TM_ZONE; |
#endif |
}; |
clock_t _EXFUN(clock, (void)); |
/contrib/sdk/sources/newlib/libc/include/wchar.h |
---|
16,7 → 16,7 |
/* For _mbstate_t definition. */ |
#include <sys/_types.h> |
#include <sys/cdefs.h> |
/* For __STDC_ISO_10646__ */ |
#include <sys/features.h> |
24,6 → 24,7 |
# define WEOF ((wint_t)-1) |
#endif |
/* This must match definition in <stdint.h> */ |
#ifndef WCHAR_MIN |
#ifdef __WCHAR_MIN__ |
#define WCHAR_MIN __WCHAR_MIN__ |
34,6 → 35,7 |
#endif |
#endif |
/* This must match definition in <stdint.h> */ |
#ifndef WCHAR_MAX |
#ifdef __WCHAR_MAX__ |
#define WCHAR_MAX __WCHAR_MAX__ |
47,7 → 49,10 |
_BEGIN_STD_C |
/* As in stdio.h, <sys/reent.h> defines __FILE. */ |
#if !defined(__FILE_defined) |
typedef __FILE FILE; |
# define __FILE_defined |
#endif |
/* As required by POSIX.1-2008, declare tm as incomplete type. |
The actual definition is in time.h. */ |
141,10 → 146,7 |
long long _EXFUN(_wcstoll_r, (struct _reent *, const wchar_t *, wchar_t **, int)); |
unsigned long _EXFUN(_wcstoul_r, (struct _reent *, const wchar_t *, wchar_t **, int)); |
unsigned long long _EXFUN(_wcstoull_r, (struct _reent *, const wchar_t *, wchar_t **, int)); |
/* On platforms where long double equals double. */ |
#ifdef _LDBL_EQ_DBL |
long double _EXFUN(wcstold, (const wchar_t *, wchar_t **)); |
#endif /* _LDBL_EQ_DBL */ |
wint_t _EXFUN(fgetwc, (__FILE *)); |
wchar_t *_EXFUN(fgetws, (wchar_t *__restrict, int, __FILE *__restrict)); |
158,16 → 160,35 |
wint_t _EXFUN (ungetwc, (wint_t wc, __FILE *)); |
wint_t _EXFUN(_fgetwc_r, (struct _reent *, __FILE *)); |
wint_t _EXFUN(_fgetwc_unlocked_r, (struct _reent *, __FILE *)); |
wchar_t *_EXFUN(_fgetws_r, (struct _reent *, wchar_t *, int, __FILE *)); |
wchar_t *_EXFUN(_fgetws_unlocked_r, (struct _reent *, wchar_t *, int, __FILE *)); |
wint_t _EXFUN(_fputwc_r, (struct _reent *, wchar_t, __FILE *)); |
wint_t _EXFUN(_fputwc_unlocked_r, (struct _reent *, wchar_t, __FILE *)); |
int _EXFUN(_fputws_r, (struct _reent *, const wchar_t *, __FILE *)); |
int _EXFUN(_fputws_unlocked_r, (struct _reent *, const wchar_t *, __FILE *)); |
int _EXFUN (_fwide_r, (struct _reent *, __FILE *, int)); |
wint_t _EXFUN (_getwc_r, (struct _reent *, __FILE *)); |
wint_t _EXFUN (_getwc_unlocked_r, (struct _reent *, __FILE *)); |
wint_t _EXFUN (_getwchar_r, (struct _reent *ptr)); |
wint_t _EXFUN (_getwchar_unlocked_r, (struct _reent *ptr)); |
wint_t _EXFUN(_putwc_r, (struct _reent *, wchar_t, __FILE *)); |
wint_t _EXFUN(_putwc_unlocked_r, (struct _reent *, wchar_t, __FILE *)); |
wint_t _EXFUN(_putwchar_r, (struct _reent *, wchar_t)); |
wint_t _EXFUN(_putwchar_unlocked_r, (struct _reent *, wchar_t)); |
wint_t _EXFUN (_ungetwc_r, (struct _reent *, wint_t wc, __FILE *)); |
#if __GNU_VISIBLE |
wint_t _EXFUN(fgetwc_unlocked, (__FILE *)); |
wchar_t *_EXFUN(fgetws_unlocked, (wchar_t *__restrict, int, __FILE *__restrict)); |
wint_t _EXFUN(fputwc_unlocked, (wchar_t, __FILE *)); |
int _EXFUN(fputws_unlocked, (const wchar_t *__restrict, __FILE *__restrict)); |
wint_t _EXFUN(getwc_unlocked, (__FILE *)); |
wint_t _EXFUN(getwchar_unlocked, (void)); |
wint_t _EXFUN(putwc_unlocked, (wchar_t, __FILE *)); |
wint_t _EXFUN(putwchar_unlocked, (wchar_t)); |
#endif |
__FILE *_EXFUN (open_wmemstream, (wchar_t **, size_t *)); |
__FILE *_EXFUN (_open_wmemstream_r, (struct _reent *, wchar_t **, size_t *)); |
218,6 → 239,13 |
#define getwchar() fgetwc(_REENT->_stdin) |
#define putwchar(wc) fputwc((wc), _REENT->_stdout) |
#if __GNU_VISIBLE |
#define getwc_unlocked(fp) fgetwc_unlocked(fp) |
#define putwc_unlocked(wc,fp) fputwc_unlocked((wc), (fp)) |
#define getwchar_unlocked() fgetwc_unlocked(_REENT->_stdin) |
#define putwchar_unlocked(wc) fputwc_unlocked((wc), _REENT->_stdout) |
#endif |
_END_STD_C |
#endif /* _WCHAR_H_ */ |