/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. |