2007-12-19 Jeff Johnston <jjohnstn@redhat.com>
* libc/string/strcasestr.c: Remove id macro.
        * libc/sys/linux/linuxthreads/attr.c: Fix up sched_priority
        field reference to be __sched_priority.
        * libc/sys/linux/linuxthreads/joinrace.c: Ditto.
        * libc/sys/linux/linuxthreads/manager.c: Ditto.
        * libc/sys/linux/stdlib/collate.c: Remove id macro.
        * libc/sys/linux/stdlib/collcmp.c: Ditto.
        * libc/sys/linux/stdlib/engine.c: Ditto.
        * libc/sys/linux/stdlib/fnmatch.c: Ditto.
        * libc/sys/linux/stdlib/glob.c: Ditto.
        * libc/sys/linux/stdlib/reallocf.c: Ditto.
        * libc/sys/linux/stdlib/regcomp.c: Ditto.
        * libc/sys/linux/stdlib/regerror.c: Ditto.
        * libc/sys/linux/stdlib/regexec.c: Ditto.
        * libc/sys/linux/stdlib/regfree.c: Ditto.
        * libc/sys/linux/sys/cdefs.h: Replace with latest version.
        * libc/sys/linux/include/argp.h: Ditto.
        * libc/sys/linux/sys/libc-lock.h: New file.
        * libc/sys/linux/sys/stdint.h: Ditto.
        * libc/sys/linux/include/sched.h: New file.
			
			
This commit is contained in:
		| @@ -1,3 +1,26 @@ | |||||||
|  | 2007-12-19  Jeff Johnston  <jjohnstn@redhat.com> | ||||||
|  |  | ||||||
|  | 	* libc/string/strcasestr.c: Remove id macro. | ||||||
|  | 	* libc/sys/linux/linuxthreads/attr.c: Fix up sched_priority | ||||||
|  | 	field reference to be __sched_priority. | ||||||
|  | 	* libc/sys/linux/linuxthreads/joinrace.c: Ditto. | ||||||
|  | 	* libc/sys/linux/linuxthreads/manager.c: Ditto. | ||||||
|  | 	* libc/sys/linux/stdlib/collate.c: Remove id macro. | ||||||
|  | 	* libc/sys/linux/stdlib/collcmp.c: Ditto. | ||||||
|  | 	* libc/sys/linux/stdlib/engine.c: Ditto. | ||||||
|  | 	* libc/sys/linux/stdlib/fnmatch.c: Ditto. | ||||||
|  | 	* libc/sys/linux/stdlib/glob.c: Ditto. | ||||||
|  | 	* libc/sys/linux/stdlib/reallocf.c: Ditto. | ||||||
|  | 	* libc/sys/linux/stdlib/regcomp.c: Ditto. | ||||||
|  | 	* libc/sys/linux/stdlib/regerror.c: Ditto. | ||||||
|  | 	* libc/sys/linux/stdlib/regexec.c: Ditto. | ||||||
|  | 	* libc/sys/linux/stdlib/regfree.c: Ditto. | ||||||
|  | 	* libc/sys/linux/sys/cdefs.h: Replace with latest version. | ||||||
|  | 	* libc/sys/linux/include/argp.h: Ditto. | ||||||
|  | 	* libc/sys/linux/sys/libc-lock.h: New file. | ||||||
|  | 	* libc/sys/linux/sys/stdint.h: Ditto. | ||||||
|  | 	* libc/sys/linux/include/sched.h: New file. | ||||||
|  |  | ||||||
| 2007-12-19  Dave Korn  <dave.korn@artimi.com> | 2007-12-19  Dave Korn  <dave.korn@artimi.com> | ||||||
| 	    Jeff Johnston  <jjohnstn@redhhat.com> | 	    Jeff Johnston  <jjohnstn@redhhat.com> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -69,7 +69,6 @@ QUICKREF | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||||
| __FBSDID("$FreeBSD: /repoman/r/ncvs/src/lib/libc/string/strcasestr.c,v 1.4 2007/01/09 00:28:12 imp Exp $"); |  | ||||||
|  |  | ||||||
| #include <ctype.h> | #include <ctype.h> | ||||||
| #include <string.h> | #include <string.h> | ||||||
|   | |||||||
| @@ -39,6 +39,14 @@ char *program_invocation_short_name; | |||||||
| typedef int error_t; | typedef int error_t; | ||||||
| # define __error_t_defined | # define __error_t_defined | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #undef __THROW | ||||||
|  | #define __THROW | ||||||
|  |  | ||||||
|  | #ifndef __NTH | ||||||
|  | # define __NTH(fct) fct __THROW | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifdef  __cplusplus | #ifdef  __cplusplus | ||||||
| extern "C" { | extern "C" { | ||||||
|   | |||||||
							
								
								
									
										87
									
								
								newlib/libc/sys/linux/include/sched.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								newlib/libc/sys/linux/include/sched.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,87 @@ | |||||||
|  | /* Definitions for POSIX 1003.1b-1993 (aka POSIX.4) scheduling interface. | ||||||
|  |    Copyright (C) 1996,1997,1999,2001-2004,2007 Free Software Foundation, Inc. | ||||||
|  |    This file is part of the GNU C Library. | ||||||
|  |  | ||||||
|  |    The GNU C Library is free software; you can redistribute it and/or | ||||||
|  |    modify it under the terms of the GNU Lesser General Public | ||||||
|  |    License as published by the Free Software Foundation; either | ||||||
|  |    version 2.1 of the License, or (at your option) any later version. | ||||||
|  |  | ||||||
|  |    The GNU C Library is distributed in the hope that it will be useful, | ||||||
|  |    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||||
|  |    Lesser General Public License for more details. | ||||||
|  |  | ||||||
|  |    You should have received a copy of the GNU Lesser General Public | ||||||
|  |    License along with the GNU C Library; if not, write to the Free | ||||||
|  |    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | ||||||
|  |    02111-1307 USA.  */ | ||||||
|  |  | ||||||
|  | #ifndef	_SCHED_H | ||||||
|  | #define	_SCHED_H	1 | ||||||
|  |  | ||||||
|  | #include <features.h> | ||||||
|  |  | ||||||
|  | /* Get type definitions.  */ | ||||||
|  | #include <bits/types.h> | ||||||
|  |  | ||||||
|  | #define __need_timespec | ||||||
|  | #include <time.h> | ||||||
|  |  | ||||||
|  | /* Get system specific constant and data structure definitions.  */ | ||||||
|  | #include <bits/sched.h> | ||||||
|  | /* Define the real names for the elements of `struct sched_param'.  */ | ||||||
|  | #define sched_priority	__sched_priority | ||||||
|  |  | ||||||
|  |  | ||||||
|  | __BEGIN_DECLS | ||||||
|  |  | ||||||
|  | /* Set scheduling parameters for a process.  */ | ||||||
|  | extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param) | ||||||
|  |      __THROW; | ||||||
|  |  | ||||||
|  | /* Retrieve scheduling parameters for a particular process.  */ | ||||||
|  | extern int sched_getparam (__pid_t __pid, struct sched_param *__param) __THROW; | ||||||
|  |  | ||||||
|  | /* Set scheduling algorithm and/or parameters for a process.  */ | ||||||
|  | extern int sched_setscheduler (__pid_t __pid, int __policy, | ||||||
|  | 			       __const struct sched_param *__param) __THROW; | ||||||
|  |  | ||||||
|  | /* Retrieve scheduling algorithm for a particular purpose.  */ | ||||||
|  | extern int sched_getscheduler (__pid_t __pid) __THROW; | ||||||
|  |  | ||||||
|  | /* Yield the processor.  */ | ||||||
|  | extern int sched_yield (void) __THROW; | ||||||
|  |  | ||||||
|  | /* Get maximum priority value for a scheduler.  */ | ||||||
|  | extern int sched_get_priority_max (int __algorithm) __THROW; | ||||||
|  |  | ||||||
|  | /* Get minimum priority value for a scheduler.  */ | ||||||
|  | extern int sched_get_priority_min (int __algorithm) __THROW; | ||||||
|  |  | ||||||
|  | /* Get the SCHED_RR interval for the named process.  */ | ||||||
|  | extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifdef __USE_GNU | ||||||
|  | /* Access macros for `cpu_set'.  */ | ||||||
|  | # define CPU_SETSIZE __CPU_SETSIZE | ||||||
|  | # define CPU_SET(cpu, cpusetp)	 __CPU_SET (cpu, cpusetp) | ||||||
|  | # define CPU_CLR(cpu, cpusetp)	 __CPU_CLR (cpu, cpusetp) | ||||||
|  | # define CPU_ISSET(cpu, cpusetp) __CPU_ISSET (cpu, cpusetp) | ||||||
|  | # define CPU_ZERO(cpusetp)	 __CPU_ZERO (cpusetp) | ||||||
|  | # define CPU_COUNT(cpusetp)	 __CPU_COUNT (cpusetp) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Set the CPU affinity for a task */ | ||||||
|  | extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, | ||||||
|  | 			      __const cpu_set_t *__cpuset) __THROW; | ||||||
|  |  | ||||||
|  | /* Get the CPU affinity for a task */ | ||||||
|  | extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, | ||||||
|  | 			      cpu_set_t *__cpuset) __THROW; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | __END_DECLS | ||||||
|  |  | ||||||
|  | #endif /* sched.h */ | ||||||
| @@ -29,7 +29,7 @@ int __pthread_attr_init_2_1(pthread_attr_t *attr) | |||||||
|  |  | ||||||
|   attr->__detachstate = PTHREAD_CREATE_JOINABLE; |   attr->__detachstate = PTHREAD_CREATE_JOINABLE; | ||||||
|   attr->__schedpolicy = SCHED_OTHER; |   attr->__schedpolicy = SCHED_OTHER; | ||||||
|   attr->__schedparam.sched_priority = 0; |   attr->__schedparam.__sched_priority = 0; | ||||||
|   attr->__inheritsched = PTHREAD_EXPLICIT_SCHED; |   attr->__inheritsched = PTHREAD_EXPLICIT_SCHED; | ||||||
|   attr->__scope = PTHREAD_SCOPE_SYSTEM; |   attr->__scope = PTHREAD_SCOPE_SYSTEM; | ||||||
|   attr->__guardsize = ps; |   attr->__guardsize = ps; | ||||||
| @@ -47,7 +47,7 @@ int __pthread_attr_init_2_0(pthread_attr_t *attr) | |||||||
| { | { | ||||||
|   attr->__detachstate = PTHREAD_CREATE_JOINABLE; |   attr->__detachstate = PTHREAD_CREATE_JOINABLE; | ||||||
|   attr->__schedpolicy = SCHED_OTHER; |   attr->__schedpolicy = SCHED_OTHER; | ||||||
|   attr->__schedparam.sched_priority = 0; |   attr->__schedparam.__sched_priority = 0; | ||||||
|   attr->__inheritsched = PTHREAD_EXPLICIT_SCHED; |   attr->__inheritsched = PTHREAD_EXPLICIT_SCHED; | ||||||
|   attr->__scope = PTHREAD_SCOPE_SYSTEM; |   attr->__scope = PTHREAD_SCOPE_SYSTEM; | ||||||
|   return 0; |   return 0; | ||||||
|   | |||||||
| @@ -35,7 +35,7 @@ main (void) | |||||||
| 	  return 1; | 	  return 1; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|       sp1.sched_priority = 0; |       sp1.__sched_priority = 0; | ||||||
|       istatus = pthread_setschedparam (thread1, SCHED_OTHER, &sp1); |       istatus = pthread_setschedparam (thread1, SCHED_OTHER, &sp1); | ||||||
|       if (istatus != ESRCH) |       if (istatus != ESRCH) | ||||||
| 	{ | 	{ | ||||||
|   | |||||||
| @@ -15,6 +15,7 @@ | |||||||
| /* The "thread manager" thread: manages creation and termination of threads */ | /* The "thread manager" thread: manages creation and termination of threads */ | ||||||
|  |  | ||||||
| #include <errno.h> | #include <errno.h> | ||||||
|  | #define __USE_MISC | ||||||
| #include <sched.h> | #include <sched.h> | ||||||
| #include <stddef.h> | #include <stddef.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| @@ -594,7 +595,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr, | |||||||
|       break; |       break; | ||||||
|     } |     } | ||||||
|     new_thread->p_priority = |     new_thread->p_priority = | ||||||
|       new_thread->p_start_args.schedparam.sched_priority; |       new_thread->p_start_args.schedparam.__sched_priority; | ||||||
|   } |   } | ||||||
|   /* Finish setting up arguments to pthread_start_thread */ |   /* Finish setting up arguments to pthread_start_thread */ | ||||||
|   new_thread->p_start_args.start_routine = start_routine; |   new_thread->p_start_args.start_routine = start_routine; | ||||||
|   | |||||||
| @@ -26,7 +26,6 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||||
| __FBSDID("$FreeBSD: src/lib/libc/locale/collate.c,v 1.24 2002/03/29 22:43:42 markm Exp $"); |  | ||||||
|  |  | ||||||
| #include "namespace.h" | #include "namespace.h" | ||||||
| #include <rune.h> | #include <rune.h> | ||||||
|   | |||||||
| @@ -25,7 +25,6 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||||
| __FBSDID("$FreeBSD: src/lib/libc/locale/collcmp.c,v 1.14 2002/03/22 21:52:18 obrien Exp $"); |  | ||||||
|  |  | ||||||
| #define ASCII_COMPATIBLE_COLLATE        /* see share/colldef */ | #define ASCII_COMPATIBLE_COLLATE        /* see share/colldef */ | ||||||
|  |  | ||||||
|   | |||||||
| @@ -38,7 +38,6 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||||
| __FBSDID("$FreeBSD: src/lib/libc/regex/engine.c,v 1.12 2002/03/22 21:52:47 obrien Exp $"); |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * The matching engine and friends.  This file is #included by regexec.c |  * The matching engine and friends.  This file is #included by regexec.c | ||||||
|   | |||||||
| @@ -38,7 +38,6 @@ | |||||||
| static char sccsid[] = "@(#)fnmatch.c	8.2 (Berkeley) 4/16/94"; | static char sccsid[] = "@(#)fnmatch.c	8.2 (Berkeley) 4/16/94"; | ||||||
| #endif /* LIBC_SCCS and not lint */ | #endif /* LIBC_SCCS and not lint */ | ||||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||||
| __FBSDID("$FreeBSD: src/lib/libc/gen/fnmatch.c,v 1.15 2002/02/01 01:32:19 obrien Exp $"); |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Function fnmatch() as specified in POSIX 1003.2-1992, section B.6. |  * Function fnmatch() as specified in POSIX 1003.2-1992, section B.6. | ||||||
|   | |||||||
| @@ -38,7 +38,6 @@ | |||||||
| static char sccsid[] = "@(#)glob.c	8.3 (Berkeley) 10/13/93"; | static char sccsid[] = "@(#)glob.c	8.3 (Berkeley) 10/13/93"; | ||||||
| #endif /* LIBC_SCCS and not lint */ | #endif /* LIBC_SCCS and not lint */ | ||||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||||
| __FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.19 2002/02/01 01:32:19 obrien Exp $"); |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * glob(3) -- a superset of the one defined in POSIX 1003.2. |  * glob(3) -- a superset of the one defined in POSIX 1003.2. | ||||||
|   | |||||||
| @@ -25,7 +25,6 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||||
| __FBSDID("$FreeBSD: src/lib/libc/stdlib/reallocf.c,v 1.4 2002/03/22 21:53:10 obrien Exp $"); |  | ||||||
|  |  | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -41,7 +41,6 @@ | |||||||
| static char sccsid[] = "@(#)regcomp.c	8.5 (Berkeley) 3/20/94"; | static char sccsid[] = "@(#)regcomp.c	8.5 (Berkeley) 3/20/94"; | ||||||
| #endif /* LIBC_SCCS and not lint */ | #endif /* LIBC_SCCS and not lint */ | ||||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||||
| __FBSDID("$FreeBSD: src/lib/libc/regex/regcomp.c,v 1.27 2002/03/22 21:52:47 obrien Exp $"); |  | ||||||
|  |  | ||||||
| #include <sys/types.h> | #include <sys/types.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
|   | |||||||
| @@ -41,7 +41,6 @@ | |||||||
| static char sccsid[] = "@(#)regerror.c	8.4 (Berkeley) 3/20/94"; | static char sccsid[] = "@(#)regerror.c	8.4 (Berkeley) 3/20/94"; | ||||||
| #endif /* LIBC_SCCS and not lint */ | #endif /* LIBC_SCCS and not lint */ | ||||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||||
| __FBSDID("$FreeBSD: src/lib/libc/regex/regerror.c,v 1.7 2002/03/21 22:48:00 obrien Exp $"); |  | ||||||
|  |  | ||||||
| #include <sys/types.h> | #include <sys/types.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
|   | |||||||
| @@ -41,7 +41,6 @@ | |||||||
| static char sccsid[] = "@(#)regexec.c	8.3 (Berkeley) 3/20/94"; | static char sccsid[] = "@(#)regexec.c	8.3 (Berkeley) 3/20/94"; | ||||||
| #endif /* LIBC_SCCS and not lint */ | #endif /* LIBC_SCCS and not lint */ | ||||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||||
| __FBSDID("$FreeBSD: src/lib/libc/regex/regexec.c,v 1.3 2002/03/21 18:41:51 obrien Exp $"); |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * the outer shell of regexec() |  * the outer shell of regexec() | ||||||
|   | |||||||
| @@ -41,7 +41,6 @@ | |||||||
| static char sccsid[] = "@(#)regfree.c	8.3 (Berkeley) 3/20/94"; | static char sccsid[] = "@(#)regfree.c	8.3 (Berkeley) 3/20/94"; | ||||||
| #endif /* LIBC_SCCS and not lint */ | #endif /* LIBC_SCCS and not lint */ | ||||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||||
| __FBSDID("$FreeBSD: src/lib/libc/regex/regfree.c,v 1.5 2002/03/22 21:52:47 obrien Exp $"); |  | ||||||
|  |  | ||||||
| #include <sys/types.h> | #include <sys/types.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
|   | |||||||
| @@ -1,4 +1,5 @@ | |||||||
| /* Copyright (C) 1992,93,94,95,96,97,98,99,2000,2001 Free Software Foundation, Inc. | /* Copyright (C) 1992-2001, 2002, 2004, 2005, 2006, 2007 | ||||||
|  |    Free Software Foundation, Inc. | ||||||
|    This file is part of the GNU C Library. |    This file is part of the GNU C Library. | ||||||
|  |  | ||||||
|    The GNU C Library is free software; you can redistribute it and/or |    The GNU C Library is free software; you can redistribute it and/or | ||||||
| @@ -31,8 +32,6 @@ | |||||||
| # error "You need a ISO C conforming compiler to use the glibc headers" | # error "You need a ISO C conforming compiler to use the glibc headers" | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #define __FBSDID(x) /* nothing */ |  | ||||||
|  |  | ||||||
| /* Some user header file might have defined this before.  */ | /* Some user header file might have defined this before.  */ | ||||||
| #undef	__P | #undef	__P | ||||||
| #undef	__PMT | #undef	__PMT | ||||||
| @@ -41,24 +40,28 @@ | |||||||
|  |  | ||||||
| /* GCC can always grok prototypes.  For C++ programs we add throw() | /* GCC can always grok prototypes.  For C++ programs we add throw() | ||||||
|    to help it optimize the function calls.  But this works only with |    to help it optimize the function calls.  But this works only with | ||||||
|    gcc 2.8.x and egcs.  */ |    gcc 2.8.x and egcs.  For gcc 3.2 and up we even mark C functions | ||||||
| # if defined __cplusplus && __GNUC_PREREQ (2,8) |    as non-throwing using a function attribute since programs can use | ||||||
| #  define __THROW	throw () |    the -fexceptions options for C code as well.  */ | ||||||
|  | # if !defined __cplusplus && __GNUC_PREREQ (3, 3) | ||||||
|  | #  define __THROW	__attribute__ ((__nothrow__)) | ||||||
|  | #  define __NTH(fct)	__attribute__ ((__nothrow__)) fct | ||||||
| # else | # else | ||||||
| #  define __THROW | #  if defined __cplusplus && __GNUC_PREREQ (2,8) | ||||||
|  | #   define __THROW	throw () | ||||||
|  | #   define __NTH(fct)	fct throw () | ||||||
|  | #  else | ||||||
|  | #   define __THROW | ||||||
|  | #   define __NTH(fct)	fct | ||||||
|  | #  endif | ||||||
| # endif | # endif | ||||||
| # define __P(args)	args __THROW |  | ||||||
| /* This macro will be used for functions which might take C++ callback |  | ||||||
|    functions.  */ |  | ||||||
| # define __PMT(args)	args |  | ||||||
|  |  | ||||||
| #else	/* Not GCC.  */ | #else	/* Not GCC.  */ | ||||||
|  |  | ||||||
| # define __inline		/* No inline functions.  */ | # define __inline		/* No inline functions.  */ | ||||||
|  |  | ||||||
| # define __THROW | # define __THROW | ||||||
| # define __P(args)	args | # define __NTH(fct)	fct | ||||||
| # define __PMT(args)	args |  | ||||||
|  |  | ||||||
| # define __const	const | # define __const	const | ||||||
| # define __signed	signed | # define __signed	signed | ||||||
| @@ -66,6 +69,11 @@ | |||||||
|  |  | ||||||
| #endif	/* GCC.  */ | #endif	/* GCC.  */ | ||||||
|  |  | ||||||
|  | /* These two macros are not used in glibc anymore.  They are kept here | ||||||
|  |    only because some other projects expect the macros to be defined.  */ | ||||||
|  | #define __P(args)	args | ||||||
|  | #define __PMT(args)	args | ||||||
|  |  | ||||||
| /* For these things, GCC behaves the ANSI way normally, | /* For these things, GCC behaves the ANSI way normally, | ||||||
|    and the non-ANSI way under -traditional.  */ |    and the non-ANSI way under -traditional.  */ | ||||||
|  |  | ||||||
| @@ -87,6 +95,31 @@ | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* The standard library needs the functions from the ISO C90 standard | ||||||
|  |    in the std namespace.  At the same time we want to be safe for | ||||||
|  |    future changes and we include the ISO C99 code in the non-standard | ||||||
|  |    namespace __c99.  The C++ wrapper header take case of adding the | ||||||
|  |    definitions to the global namespace.  */ | ||||||
|  | #if defined __cplusplus && defined _GLIBCPP_USE_NAMESPACES | ||||||
|  | # define __BEGIN_NAMESPACE_STD	namespace std { | ||||||
|  | # define __END_NAMESPACE_STD	} | ||||||
|  | # define __USING_NAMESPACE_STD(name) using std::name; | ||||||
|  | # define __BEGIN_NAMESPACE_C99	namespace __c99 { | ||||||
|  | # define __END_NAMESPACE_C99	} | ||||||
|  | # define __USING_NAMESPACE_C99(name) using __c99::name; | ||||||
|  | #else | ||||||
|  | /* For compatibility we do not add the declarations into any | ||||||
|  |    namespace.  They will end up in the global namespace which is what | ||||||
|  |    old code expects.  */ | ||||||
|  | # define __BEGIN_NAMESPACE_STD | ||||||
|  | # define __END_NAMESPACE_STD | ||||||
|  | # define __USING_NAMESPACE_STD(name) | ||||||
|  | # define __BEGIN_NAMESPACE_C99 | ||||||
|  | # define __END_NAMESPACE_C99 | ||||||
|  | # define __USING_NAMESPACE_C99(name) | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
| /* Support for bounded pointers.  */ | /* Support for bounded pointers.  */ | ||||||
| #ifndef __BOUNDED_POINTERS__ | #ifndef __BOUNDED_POINTERS__ | ||||||
| # define __bounded	/* nothing */ | # define __bounded	/* nothing */ | ||||||
| @@ -95,6 +128,12 @@ | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Fortify support.  */ | ||||||
|  | #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) | ||||||
|  | #define __bos0(ptr) __builtin_object_size (ptr, 0) | ||||||
|  | #define __warndecl(name, msg) extern void name (void) | ||||||
|  |  | ||||||
|  |  | ||||||
| /* Support for flexible arrays.  */ | /* Support for flexible arrays.  */ | ||||||
| #if __GNUC_PREREQ (2,97) | #if __GNUC_PREREQ (2,97) | ||||||
| /* GCC 2.97 supports C99 flexible array members.  */ | /* GCC 2.97 supports C99 flexible array members.  */ | ||||||
| @@ -126,6 +165,13 @@ | |||||||
| #if defined __GNUC__ && __GNUC__ >= 2 | #if defined __GNUC__ && __GNUC__ >= 2 | ||||||
|  |  | ||||||
| # define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias)) | # define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias)) | ||||||
|  | # ifdef __cplusplus | ||||||
|  | #  define __REDIRECT_NTH(name, proto, alias) \ | ||||||
|  |      name proto __THROW __asm__ (__ASMNAME (#alias)) | ||||||
|  | # else | ||||||
|  | #  define __REDIRECT_NTH(name, proto, alias) \ | ||||||
|  |      name proto __asm__ (__ASMNAME (#alias)) __THROW | ||||||
|  | # endif | ||||||
| # define __ASMNAME(cname)  __ASMNAME2 (__USER_LABEL_PREFIX__, cname) | # define __ASMNAME(cname)  __ASMNAME2 (__USER_LABEL_PREFIX__, cname) | ||||||
| # define __ASMNAME2(prefix, cname) __STRING (prefix) cname | # define __ASMNAME2(prefix, cname) __STRING (prefix) cname | ||||||
|  |  | ||||||
| @@ -173,6 +219,13 @@ | |||||||
| # define __attribute_noinline__ /* Ignore */ | # define __attribute_noinline__ /* Ignore */ | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | /* gcc allows marking deprecated functions.  */ | ||||||
|  | #if __GNUC_PREREQ (3,2) | ||||||
|  | # define __attribute_deprecated__ __attribute__ ((__deprecated__)) | ||||||
|  | #else | ||||||
|  | # define __attribute_deprecated__ /* Ignore */ | ||||||
|  | #endif | ||||||
|  |  | ||||||
| /* At some point during the gcc 2.8 development the `format_arg' attribute | /* At some point during the gcc 2.8 development the `format_arg' attribute | ||||||
|    for functions was introduced.  We don't want to use it unconditionally |    for functions was introduced.  We don't want to use it unconditionally | ||||||
|    (although this would be possible) since it generates warnings. |    (although this would be possible) since it generates warnings. | ||||||
| @@ -196,6 +249,47 @@ | |||||||
| # define __attribute_format_strfmon__(a,b) /* Ignore */ | # define __attribute_format_strfmon__(a,b) /* Ignore */ | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | /* The nonull function attribute allows to mark pointer parameters which | ||||||
|  |    must not be NULL.  */ | ||||||
|  | #if __GNUC_PREREQ (3,3) | ||||||
|  | # define __nonnull(params) __attribute__ ((__nonnull__ params)) | ||||||
|  | #else | ||||||
|  | # define __nonnull(params) | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /* If fortification mode, we warn about unused results of certain | ||||||
|  |    function calls which can lead to problems.  */ | ||||||
|  | #if __GNUC_PREREQ (3,4) | ||||||
|  | # define __attribute_warn_unused_result__ \ | ||||||
|  |    __attribute__ ((__warn_unused_result__)) | ||||||
|  | # if __USE_FORTIFY_LEVEL > 0 | ||||||
|  | #  define __wur __attribute_warn_unused_result__ | ||||||
|  | # endif | ||||||
|  | #else | ||||||
|  | # define __attribute_warn_unused_result__ /* empty */ | ||||||
|  | #endif | ||||||
|  | #ifndef __wur | ||||||
|  | # define __wur /* Ignore */ | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /* Forces a function to be always inlined.  */ | ||||||
|  | #if __GNUC_PREREQ (3,2) | ||||||
|  | # define __always_inline __inline __attribute__ ((__always_inline__)) | ||||||
|  | #else | ||||||
|  | # define __always_inline __inline | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 | ||||||
|  |    inline semantics, unless -fgnu89-inline is used.  */ | ||||||
|  | #ifdef __GNUC_STDC_INLINE__ | ||||||
|  | # define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) | ||||||
|  | # define __extern_always_inline \ | ||||||
|  |   extern __always_inline __attribute__ ((__gnu_inline__)) | ||||||
|  | #else | ||||||
|  | # define __extern_inline extern __inline | ||||||
|  | # define __extern_always_inline extern __always_inline | ||||||
|  | #endif | ||||||
|  |  | ||||||
| /* It is possible to compile containing GCC extensions even if GCC is | /* It is possible to compile containing GCC extensions even if GCC is | ||||||
|    run in pedantic mode if the uses are carefully marked using the |    run in pedantic mode if the uses are carefully marked using the | ||||||
|    `__extension__' keyword.  But this is not generally available before |    `__extension__' keyword.  But this is not generally available before | ||||||
| @@ -227,12 +321,29 @@ | |||||||
| # endif | # endif | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| /* The nonull function attribute allows to mark pointer parameters which | #include <bits/wordsize.h> | ||||||
|    must not be NULL.  */ |  | ||||||
| #if __GNUC_PREREQ (3,3) | #if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH | ||||||
| # define __nonnull(params) __attribute__ ((__nonnull__ params)) | # define __LDBL_COMPAT 1 | ||||||
| #else | # ifdef __REDIRECT | ||||||
| # define __nonnull(params) | #  define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias) | ||||||
|  | #  define __LDBL_REDIR(name, proto) \ | ||||||
|  |   __LDBL_REDIR1 (name, proto, __nldbl_##name) | ||||||
|  | #  define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias) | ||||||
|  | #  define __LDBL_REDIR_NTH(name, proto) \ | ||||||
|  |   __LDBL_REDIR1_NTH (name, proto, __nldbl_##name) | ||||||
|  | #  define __LDBL_REDIR1_DECL(name, alias) \ | ||||||
|  |   extern __typeof (name) name __asm (__ASMNAME (#alias)); | ||||||
|  | #  define __LDBL_REDIR_DECL(name) \ | ||||||
|  |   extern __typeof (name) name __asm (__ASMNAME ("__nldbl_" #name)); | ||||||
|  | # endif | ||||||
|  | #endif | ||||||
|  | #if !defined __LDBL_COMPAT || !defined __REDIRECT | ||||||
|  | # define __LDBL_REDIR1(name, proto, alias) name proto | ||||||
|  | # define __LDBL_REDIR(name, proto) name proto | ||||||
|  | # define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW | ||||||
|  | # define __LDBL_REDIR_NTH(name, proto) name proto __THROW | ||||||
|  | # define __LDBL_REDIR_DECL(name) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #endif	 /* sys/cdefs.h */ | #endif	 /* sys/cdefs.h */ | ||||||
|   | |||||||
							
								
								
									
										297
									
								
								newlib/libc/sys/linux/sys/libc-lock.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										297
									
								
								newlib/libc/sys/linux/sys/libc-lock.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,297 @@ | |||||||
|  | /* libc-internal interface for mutex locks.  LinuxThreads version. | ||||||
|  |    Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. | ||||||
|  |    This file is part of the GNU C Library. | ||||||
|  |  | ||||||
|  |    The GNU C Library is free software; you can redistribute it and/or | ||||||
|  |    modify it under the terms of the GNU Library General Public License as | ||||||
|  |    published by the Free Software Foundation; either version 2 of the | ||||||
|  |    License, or (at your option) any later version. | ||||||
|  |  | ||||||
|  |    The GNU C Library is distributed in the hope that it will be useful, | ||||||
|  |    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||||
|  |    Library General Public License for more details. | ||||||
|  |  | ||||||
|  |    You should have received a copy of the GNU Library General Public | ||||||
|  |    License along with the GNU C Library; see the file COPYING.LIB.  If not, | ||||||
|  |    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||||||
|  |    Boston, MA 02111-1307, USA.  */ | ||||||
|  |  | ||||||
|  | #ifndef _BITS_LIBC_LOCK_H | ||||||
|  | #define _BITS_LIBC_LOCK_H 1 | ||||||
|  |  | ||||||
|  | #include <pthread.h> | ||||||
|  |  | ||||||
|  | /* Mutex type.  */ | ||||||
|  | #if defined(_LIBC) || defined(_IO_MTSAFE_IO) | ||||||
|  | typedef pthread_mutex_t __libc_lock_t; | ||||||
|  | typedef struct { pthread_mutex_t mutex; } __libc_lock_recursive_t; | ||||||
|  | # ifdef __USE_UNIX98 | ||||||
|  | typedef pthread_rwlock_t __libc_rwlock_t; | ||||||
|  | # else | ||||||
|  | typedef struct __libc_rwlock_opaque__ __libc_rwlock_t; | ||||||
|  | # endif | ||||||
|  | #else | ||||||
|  | typedef struct __libc_lock_opaque__ __libc_lock_t; | ||||||
|  | typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t; | ||||||
|  | typedef struct __libc_rwlock_opaque__ __libc_rwlock_t; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /* Type for key to thread-specific data.  */ | ||||||
|  | typedef pthread_key_t __libc_key_t; | ||||||
|  |  | ||||||
|  | /* Define a lock variable NAME with storage class CLASS.  The lock must be | ||||||
|  |    initialized with __libc_lock_init before it can be used (or define it | ||||||
|  |    with __libc_lock_define_initialized, below).  Use `extern' for CLASS to | ||||||
|  |    declare a lock defined in another module.  In public structure | ||||||
|  |    definitions you must use a pointer to the lock structure (i.e., NAME | ||||||
|  |    begins with a `*'), because its storage size will not be known outside | ||||||
|  |    of libc.  */ | ||||||
|  | #define __libc_lock_define(CLASS,NAME) \ | ||||||
|  |   CLASS __libc_lock_t NAME; | ||||||
|  | #define __libc_rwlock_define(CLASS,NAME) \ | ||||||
|  |   CLASS __libc_rwlock_t NAME; | ||||||
|  | #define __libc_lock_define_recursive(CLASS,NAME) \ | ||||||
|  |   CLASS __libc_lock_recursive_t NAME; | ||||||
|  |  | ||||||
|  | /* Define an initialized lock variable NAME with storage class CLASS. | ||||||
|  |  | ||||||
|  |    For the C library we take a deeper look at the initializer.  For | ||||||
|  |    this implementation all fields are initialized to zero.  Therefore | ||||||
|  |    we don't initialize the variable which allows putting it into the | ||||||
|  |    BSS section.  (Except on PA-RISC and other odd architectures, where | ||||||
|  |    initialized locks must be set to one due to the lack of normal | ||||||
|  |    atomic operations.) */ | ||||||
|  |  | ||||||
|  | #if __LT_SPINLOCK_INIT == 0 | ||||||
|  | #  define __libc_lock_define_initialized(CLASS,NAME) \ | ||||||
|  |   CLASS __libc_lock_t NAME; | ||||||
|  | #else | ||||||
|  | #  define __libc_lock_define_initialized(CLASS,NAME) \ | ||||||
|  |   CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #define __libc_rwlock_define_initialized(CLASS,NAME) \ | ||||||
|  |   CLASS __libc_rwlock_t NAME = PTHREAD_RWLOCK_INITIALIZER; | ||||||
|  |  | ||||||
|  | /* Define an initialized recursive lock variable NAME with storage | ||||||
|  |    class CLASS.  */ | ||||||
|  | #define __libc_lock_define_initialized_recursive(CLASS,NAME) \ | ||||||
|  |   CLASS __libc_lock_recursive_t NAME = _LIBC_LOCK_RECURSIVE_INITIALIZER; | ||||||
|  | #define _LIBC_LOCK_RECURSIVE_INITIALIZER \ | ||||||
|  |   {PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP} | ||||||
|  |  | ||||||
|  | /* Initialize the named lock variable, leaving it in a consistent, unlocked | ||||||
|  |    state.  */ | ||||||
|  | #define __libc_lock_init(NAME) \ | ||||||
|  |   (__pthread_mutex_init != NULL ? __pthread_mutex_init (&(NAME), NULL) : 0); | ||||||
|  | #define __libc_rwlock_init(NAME) \ | ||||||
|  |   (__pthread_rwlock_init != NULL ? __pthread_rwlock_init (&(NAME), NULL) : 0); | ||||||
|  |  | ||||||
|  | /* Same as last but this time we initialize a recursive mutex.  */ | ||||||
|  | #define __libc_lock_init_recursive(NAME) \ | ||||||
|  |   do {									      \ | ||||||
|  |     if (__pthread_mutex_init != NULL)					      \ | ||||||
|  |       {									      \ | ||||||
|  | 	pthread_mutexattr_t __attr;					      \ | ||||||
|  | 	__pthread_mutexattr_init (&__attr);				      \ | ||||||
|  | 	__pthread_mutexattr_settype (&__attr, PTHREAD_MUTEX_RECURSIVE_NP); \ | ||||||
|  | 	__pthread_mutex_init (&(NAME).mutex, &__attr);			      \ | ||||||
|  | 	__pthread_mutexattr_destroy (&__attr);				      \ | ||||||
|  |       }									      \ | ||||||
|  |   } while (0); | ||||||
|  |  | ||||||
|  | /* Finalize the named lock variable, which must be locked.  It cannot be | ||||||
|  |    used again until __libc_lock_init is called again on it.  This must be | ||||||
|  |    called on a lock variable before the containing storage is reused.  */ | ||||||
|  | #define __libc_lock_fini(NAME) \ | ||||||
|  |   (__pthread_mutex_destroy != NULL ? __pthread_mutex_destroy (&(NAME)) : 0); | ||||||
|  | #define __libc_rwlock_fini(NAME) \ | ||||||
|  |   (__pthread_rwlock_destroy != NULL ? __pthread_rwlock_destroy (&(NAME)) : 0); | ||||||
|  |  | ||||||
|  | /* Finalize recursive named lock.  */ | ||||||
|  | #define __libc_lock_fini_recursive(NAME) __libc_lock_fini ((NAME).mutex) | ||||||
|  |  | ||||||
|  | /* Lock the named lock variable.  */ | ||||||
|  | #define __libc_lock_lock(NAME) \ | ||||||
|  |   (__pthread_mutex_lock != NULL ? __pthread_mutex_lock (&(NAME)) : 0); | ||||||
|  | #define __libc_rwlock_rdlock(NAME) \ | ||||||
|  |   (__pthread_rwlock_rdlock != NULL ? __pthread_rwlock_rdlock (&(NAME)) : 0); | ||||||
|  | #define __libc_rwlock_wrlock(NAME) \ | ||||||
|  |   (__pthread_rwlock_wrlock != NULL ? __pthread_rwlock_wrlock (&(NAME)) : 0); | ||||||
|  |  | ||||||
|  | /* Lock the recursive named lock variable.  */ | ||||||
|  | #define __libc_lock_lock_recursive(NAME) __libc_lock_lock ((NAME).mutex) | ||||||
|  |  | ||||||
|  | /* Try to lock the named lock variable.  */ | ||||||
|  | #define __libc_lock_trylock(NAME) \ | ||||||
|  |   (__pthread_mutex_trylock != NULL ? __pthread_mutex_trylock (&(NAME)) : 0) | ||||||
|  | #define __libc_rwlock_tryrdlock(NAME) \ | ||||||
|  |   (__pthread_rwlock_tryrdlock != NULL \ | ||||||
|  |    ? __pthread_rwlock_tryrdlock (&(NAME)) : 0) | ||||||
|  | #define __libc_rwlock_trywrlock(NAME) \ | ||||||
|  |   (__pthread_rwlock_trywrlock != NULL \ | ||||||
|  |    ? __pthread_rwlock_trywrlock (&(NAME)) : 0) | ||||||
|  |  | ||||||
|  | /* Try to lock the recursive named lock variable.  */ | ||||||
|  | #define __libc_lock_trylock_recursive(NAME) __libc_lock_trylock ((NAME).mutex) | ||||||
|  |  | ||||||
|  | /* Unlock the named lock variable.  */ | ||||||
|  | #define __libc_lock_unlock(NAME) \ | ||||||
|  |   (__pthread_mutex_unlock != NULL ? __pthread_mutex_unlock (&(NAME)) : 0); | ||||||
|  | #define __libc_rwlock_unlock(NAME) \ | ||||||
|  |   (__pthread_rwlock_unlock != NULL ? __pthread_rwlock_unlock (&(NAME)) : 0); | ||||||
|  |  | ||||||
|  | /* Unlock the recursive named lock variable.  */ | ||||||
|  | #define __libc_lock_unlock_recursive(NAME) __libc_lock_unlock ((NAME).mutex) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Define once control variable.  */ | ||||||
|  | #if PTHREAD_ONCE_INIT == 0 | ||||||
|  | /* Special case for static variables where we can avoid the initialization | ||||||
|  |    if it is zero.  */ | ||||||
|  | # define __libc_once_define(CLASS, NAME) \ | ||||||
|  |   CLASS pthread_once_t NAME | ||||||
|  | #else | ||||||
|  | # define __libc_once_define(CLASS, NAME) \ | ||||||
|  |   CLASS pthread_once_t NAME = PTHREAD_ONCE_INIT | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /* Call handler iff the first call.  */ | ||||||
|  | #define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \ | ||||||
|  |   do {									      \ | ||||||
|  |     if (__pthread_once != NULL)						      \ | ||||||
|  |       __pthread_once (&(ONCE_CONTROL), (INIT_FUNCTION));		      \ | ||||||
|  |     else if ((ONCE_CONTROL) == PTHREAD_ONCE_INIT) {			      \ | ||||||
|  |       INIT_FUNCTION ();							      \ | ||||||
|  |       (ONCE_CONTROL) = !PTHREAD_ONCE_INIT;				      \ | ||||||
|  |     }									      \ | ||||||
|  |   } while (0) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Start critical region with cleanup.  */ | ||||||
|  | #define __libc_cleanup_region_start(DOIT, FCT, ARG) \ | ||||||
|  |   { struct _pthread_cleanup_buffer _buffer;				      \ | ||||||
|  |     int _avail = (DOIT) && _pthread_cleanup_push_defer != NULL;		      \ | ||||||
|  |     if (_avail) {							      \ | ||||||
|  |       _pthread_cleanup_push_defer (&_buffer, (FCT), (ARG));		      \ | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | /* End critical region with cleanup.  */ | ||||||
|  | #define __libc_cleanup_region_end(DOIT) \ | ||||||
|  |     if (_avail) {							      \ | ||||||
|  |       _pthread_cleanup_pop_restore (&_buffer, (DOIT));			      \ | ||||||
|  |     }									      \ | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | /* Sometimes we have to exit the block in the middle.  */ | ||||||
|  | #define __libc_cleanup_end(DOIT) \ | ||||||
|  |     if (_avail) {							      \ | ||||||
|  |       _pthread_cleanup_pop_restore (&_buffer, (DOIT));			      \ | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | /* Create thread-specific key.  */ | ||||||
|  | #define __libc_key_create(KEY, DESTRUCTOR) \ | ||||||
|  |   (__pthread_key_create != NULL ? __pthread_key_create (KEY, DESTRUCTOR) : 1) | ||||||
|  |  | ||||||
|  | /* Get thread-specific data.  */ | ||||||
|  | #define __libc_getspecific(KEY) \ | ||||||
|  |   (__pthread_getspecific != NULL ? __pthread_getspecific (KEY) : NULL) | ||||||
|  |  | ||||||
|  | /* Set thread-specific data.  */ | ||||||
|  | #define __libc_setspecific(KEY, VALUE) \ | ||||||
|  |   (__pthread_setspecific != NULL ? __pthread_setspecific (KEY, VALUE) : 0) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Register handlers to execute before and after `fork'.  */ | ||||||
|  | #define __libc_atfork(PREPARE, PARENT, CHILD) \ | ||||||
|  |   (__pthread_atfork != NULL ? __pthread_atfork (PREPARE, PARENT, CHILD) : 0) | ||||||
|  |  | ||||||
|  | /* Functions that are used by this file and are internal to the GNU C | ||||||
|  |    library.  */ | ||||||
|  |  | ||||||
|  | extern int __pthread_mutex_init (pthread_mutex_t *__mutex, | ||||||
|  | 				 __const pthread_mutexattr_t *__mutex_attr); | ||||||
|  |  | ||||||
|  | extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex); | ||||||
|  |  | ||||||
|  | extern int __pthread_mutex_trylock (pthread_mutex_t *__mutex); | ||||||
|  |  | ||||||
|  | extern int __pthread_mutex_lock (pthread_mutex_t *__mutex); | ||||||
|  |  | ||||||
|  | extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex); | ||||||
|  |  | ||||||
|  | extern int __pthread_mutexattr_init (pthread_mutexattr_t *__attr); | ||||||
|  |  | ||||||
|  | extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *__attr); | ||||||
|  |  | ||||||
|  | extern int __pthread_mutexattr_settype (pthread_mutexattr_t *__attr, | ||||||
|  | 					int __kind); | ||||||
|  |  | ||||||
|  | #ifdef __USE_UNIX98 | ||||||
|  | extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock, | ||||||
|  | 				  __const pthread_rwlockattr_t *__attr); | ||||||
|  |  | ||||||
|  | extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock); | ||||||
|  |  | ||||||
|  | extern int __pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock); | ||||||
|  |  | ||||||
|  | extern int __pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock); | ||||||
|  |  | ||||||
|  | extern int __pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock); | ||||||
|  |  | ||||||
|  | extern int __pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock); | ||||||
|  |  | ||||||
|  | extern int __pthread_rwlock_unlock (pthread_rwlock_t *__rwlock); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | extern int __pthread_key_create (pthread_key_t *__key, | ||||||
|  | 				 void (*__destr_function) (void *)); | ||||||
|  |  | ||||||
|  | extern int __pthread_setspecific (pthread_key_t __key, | ||||||
|  | 				  __const void *__pointer); | ||||||
|  |  | ||||||
|  | extern void *__pthread_getspecific (pthread_key_t __key); | ||||||
|  |  | ||||||
|  | extern int __pthread_once (pthread_once_t *__once_control, | ||||||
|  | 			   void (*__init_routine) (void)); | ||||||
|  |  | ||||||
|  | extern int __pthread_atfork (void (*__prepare) (void), | ||||||
|  | 			     void (*__parent) (void), | ||||||
|  | 			     void (*__child) (void)); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Make the pthread functions weak so that we can elide them from | ||||||
|  |    single-threaded processes.  */ | ||||||
|  | #ifndef __NO_WEAK_PTHREAD_ALIASES | ||||||
|  | #  pragma weak __pthread_mutex_init | ||||||
|  | #  pragma weak __pthread_mutex_destroy | ||||||
|  | #  pragma weak __pthread_mutex_lock | ||||||
|  | #  pragma weak __pthread_mutex_trylock | ||||||
|  | #  pragma weak __pthread_mutex_unlock | ||||||
|  | #  pragma weak __pthread_mutexattr_init | ||||||
|  | #  pragma weak __pthread_mutexattr_destroy | ||||||
|  | #  pragma weak __pthread_mutexattr_settype | ||||||
|  | #  pragma weak __pthread_rwlock_destroy | ||||||
|  | #  pragma weak __pthread_rwlock_rdlock | ||||||
|  | #  pragma weak __pthread_rwlock_tryrdlock | ||||||
|  | #  pragma weak __pthread_rwlock_wrlock | ||||||
|  | #  pragma weak __pthread_rwlock_trywrlock | ||||||
|  | #  pragma weak __pthread_rwlock_unlock | ||||||
|  | #  pragma weak __pthread_key_create | ||||||
|  | #  pragma weak __pthread_setspecific | ||||||
|  | #  pragma weak __pthread_getspecific | ||||||
|  | #  pragma weak __pthread_once | ||||||
|  | #  pragma weak __pthread_initialize | ||||||
|  | #  pragma weak __pthread_atfork | ||||||
|  | #  pragma weak _pthread_cleanup_push_defer | ||||||
|  | #  pragma weak _pthread_cleanup_pop_restore | ||||||
|  | # endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /* We need portable names for some functions.  E.g., when they are | ||||||
|  |    used as argument to __libc_cleanup_region_start.  */ | ||||||
|  | #define __libc_mutex_unlock __pthread_mutex_unlock | ||||||
|  |  | ||||||
|  | #endif	/* bits/libc-lock.h */ | ||||||
							
								
								
									
										254
									
								
								newlib/libc/sys/linux/sys/stdint.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										254
									
								
								newlib/libc/sys/linux/sys/stdint.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,254 @@ | |||||||
|  | /* | ||||||
|  |  * 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. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * @todo - Add fast<N>_t types. | ||||||
|  |  * @todo - Add support for wint_t types. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #ifndef _STDINT_H | ||||||
|  | #define _STDINT_H | ||||||
|  |  | ||||||
|  | #include <sys/types.h> | ||||||
|  |  | ||||||
|  | #ifdef __cplusplus | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if defined(__GNUC__) && (__GNUC__ >= 3 ) \ | ||||||
|  |   && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ > 2 )  | ||||||
|  | #define __STDINT_EXP(x) __##x##__ | ||||||
|  | #else | ||||||
|  | #define __STDINT_EXP(x) x | ||||||
|  | #include <limits.h> | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __STDINT_EXP(SCHAR_MAX) == 0x7f | ||||||
|  | #define __int8_t_defined 1 | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __int8_t_defined | ||||||
|  | typedef signed char int_least8_t; | ||||||
|  | typedef unsigned char uint_least8_t; | ||||||
|  | #define __int_least8_t_defined 1 | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __STDINT_EXP(SHRT_MAX) == 0x7fff | ||||||
|  | #define __int16_t_defined 1 | ||||||
|  | #elif __STDINT_EXP(INT_MAX) == 0x7fff | ||||||
|  | #define __int16_t_defined 1 | ||||||
|  | #elif __STDINT_EXP(SCHAR_MAX) == 0x7fff | ||||||
|  | #define __int16_t_defined 1 | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __int16_t_defined | ||||||
|  | typedef int16_t   	int_least16_t; | ||||||
|  | typedef uint16_t 	uint_least16_t; | ||||||
|  | #define __int_least16_t_defined 1 | ||||||
|  |  | ||||||
|  | #ifndef __int_least8_t_defined | ||||||
|  | typedef int16_t	   	int_least8_t; | ||||||
|  | typedef uint16_t  	uint_least8_t; | ||||||
|  | #define __int_least8_t_defined 1 | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __STDINT_EXP(INT_MAX) == 0x7fffffffL | ||||||
|  | #define __int32_t_defined 1 | ||||||
|  | #elif __STDINT_EXP(LONG_MAX) == 0x7fffffffL | ||||||
|  | #define __int32_t_defined 1 | ||||||
|  | #define __have_long32 1 | ||||||
|  | #elif __STDINT_EXP(SHRT_MAX) == 0x7fffffffL | ||||||
|  | #define __int32_t_defined 1 | ||||||
|  | #elif __STDINT_EXP(SCHAR_MAX) == 0x7fffffffL | ||||||
|  | #define __int32_t_defined 1 | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __int32_t_defined | ||||||
|  | typedef int32_t   	int_least32_t; | ||||||
|  | typedef uint32_t 	uint_least32_t; | ||||||
|  | #define __int_least32_t_defined 1 | ||||||
|  |  | ||||||
|  | #ifndef __int_least8_t_defined | ||||||
|  | typedef int32_t	   	int_least8_t; | ||||||
|  | typedef uint32_t  	uint_least8_t; | ||||||
|  | #define __int_least8_t_defined 1 | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #ifndef __int_least16_t_defined | ||||||
|  | typedef int32_t	   	int_least16_t; | ||||||
|  | typedef uint32_t  	uint_least16_t; | ||||||
|  | #define __int_least16_t_defined 1 | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __STDINT_EXP(LONG_MAX) > 0x7fffffff | ||||||
|  | #define __int64_t_defined 1 | ||||||
|  | #define __have_long64 1 | ||||||
|  | #elif  defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff) | ||||||
|  | #define __int64_t_defined 1 | ||||||
|  | #define __have_longlong64 1 | ||||||
|  | #elif  defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff) | ||||||
|  | #define __int64_t_defined 1 | ||||||
|  | #define __have_longlong64 1 | ||||||
|  | #elif  __STDINT_EXP(INT_MAX) > 0x7fffffff | ||||||
|  | #define __int64_t_defined 1 | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __int64_t_defined | ||||||
|  | typedef int64_t   	int_least64_t; | ||||||
|  | typedef uint64_t 	uint_least64_t; | ||||||
|  | #define __int_least64_t_defined 1 | ||||||
|  |  | ||||||
|  | #ifndef __int_least8_t_defined | ||||||
|  | typedef int64_t	   	int_least8_t; | ||||||
|  | typedef uint64_t  	uint_least8_t; | ||||||
|  | #define __int_least8_t_defined 1 | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #ifndef __int_least16_t_defined | ||||||
|  | typedef int64_t	   	int_least16_t; | ||||||
|  | typedef uint64_t  	uint_least16_t; | ||||||
|  | #define __int_least16_t_defined 1 | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #ifndef __int_least32_t_defined | ||||||
|  | typedef int64_t	   	int_least32_t; | ||||||
|  | typedef uint64_t  	uint_least32_t; | ||||||
|  | #define __int_least32_t_defined 1 | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __have_longlong64 | ||||||
|  | typedef signed long long intmax_t; | ||||||
|  | typedef unsigned long long uintmax_t; | ||||||
|  | #else | ||||||
|  | typedef signed long intmax_t; | ||||||
|  | typedef unsigned long uintmax_t; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /* Limits of Specified-Width Integer Types */ | ||||||
|  |  | ||||||
|  | #if __int8_t_defined | ||||||
|  | #define INT8_MIN 	-128 | ||||||
|  | #define INT8_MAX 	 127 | ||||||
|  | #define UINT8_MAX 	 255 | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __int_least8_t_defined | ||||||
|  | #define INT_LEAST8_MIN 	-128 | ||||||
|  | #define INT_LEAST8_MAX 	 127 | ||||||
|  | #define UINT_LEAST8_MAX	 255 | ||||||
|  | #else | ||||||
|  | #error required type int_least8_t missing | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __int16_t_defined | ||||||
|  | #define INT16_MIN 	-32768 | ||||||
|  | #define INT16_MAX 	 32767 | ||||||
|  | #define UINT16_MAX 	 65535 | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __int_least16_t_defined | ||||||
|  | #define INT_LEAST16_MIN	-32768 | ||||||
|  | #define INT_LEAST16_MAX	 32767 | ||||||
|  | #define UINT_LEAST16_MAX 65535 | ||||||
|  | #else | ||||||
|  | #error required type int_least16_t missing | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __int32_t_defined | ||||||
|  | #define INT32_MIN 	 (-2147483647-1) | ||||||
|  | #define INT32_MAX 	 2147483647 | ||||||
|  | #define UINT32_MAX       4294967295U | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __int_least32_t_defined | ||||||
|  | #define INT_LEAST32_MIN  (-2147483647-1) | ||||||
|  | #define INT_LEAST32_MAX  2147483647 | ||||||
|  | #define UINT_LEAST32_MAX 4294967295U | ||||||
|  | #else | ||||||
|  | #error required type int_least32_t missing | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __int64_t_defined | ||||||
|  | #ifdef __have_long64 | ||||||
|  | #define INT64_MIN 	(-9223372036854775807L-1L) | ||||||
|  | #define INT64_MAX 	 9223372036854775807L | ||||||
|  | #define UINT64_MAX 	18446744073709551615U | ||||||
|  | #elif __have_longlong64 | ||||||
|  | #define INT64_MIN 	(-9223372036854775807LL-1LL) | ||||||
|  | #define INT64_MAX 	 9223372036854775807LL | ||||||
|  | #define UINT64_MAX 	18446744073709551615ULL | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __int_least64_t_defined | ||||||
|  | #ifdef __have_long64 | ||||||
|  | #define INT_LEAST64_MIN  (-9223372036854775807L-1L) | ||||||
|  | #define INT_LEAST64_MAX  9223372036854775807L | ||||||
|  | #define UINT_LEAST64_MAX 18446744073709551615U | ||||||
|  | #elif __have_longlong64 | ||||||
|  | #define INT_LEAST64_MIN  (-9223372036854775807LL-1LL) | ||||||
|  | #define INT_LEAST64_MAX  9223372036854775807LL | ||||||
|  | #define UINT_LEAST64_MAX 18446744073709551615ULL | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /* This must match size_t in stddef.h, currently long unsigned int */ | ||||||
|  | #define SIZE_MIN (-__STDINT_EXP(LONG_MAX) - 1L) | ||||||
|  | #define SIZE_MAX __STDINT_EXP(LONG_MAX) | ||||||
|  |  | ||||||
|  | /* This must match sig_atomic_t in <signal.h> (currently int) */ | ||||||
|  | #define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1) | ||||||
|  | #define SIG_ATOMIC_MAX __STDINT_EXP(INT_MAX) | ||||||
|  |  | ||||||
|  | /* This must match ptrdiff_t  in <stddef.h> (currently long int) */ | ||||||
|  | #define PTRDIFF_MIN (-__STDINT_EXP(LONG_MAX) - 1L) | ||||||
|  | #define PTRDIFF_MAX __STDINT_EXP(LONG_MAX) | ||||||
|  |  | ||||||
|  | /** Macros for minimum-width integer constant expressions */ | ||||||
|  | #define INT8_C(x)	x | ||||||
|  | #define UINT8_C(x)	x##U | ||||||
|  |  | ||||||
|  | #define INT16_C(x)	x | ||||||
|  | #define UINT16_C(x)	x##U | ||||||
|  |  | ||||||
|  | #if __have_long32 | ||||||
|  | #define INT32_C(x)	x##L | ||||||
|  | #define UINT32_C(x)	x##UL | ||||||
|  | #else | ||||||
|  | #define INT32_C(x)	x | ||||||
|  | #define UINT32_C(x)	x##U | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #if __int64_t_defined | ||||||
|  | #if __have_longlong64 | ||||||
|  | #define INT64_C(x)	x##LL | ||||||
|  | #define UINT64_C(x)	x##ULL | ||||||
|  | #else | ||||||
|  | #define INT64_C(x)	x##L | ||||||
|  | #define UINT64_C(x)	x##UL | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | /** Macros for greatest-width integer constant expression */ | ||||||
|  | #if __have_longlong64 | ||||||
|  | #define INTMAX_C(x)	x##LL | ||||||
|  | #define UINTMAX_C(x)	x##ULL | ||||||
|  | #else | ||||||
|  | #define INTMAX_C(x)	x##L | ||||||
|  | #define UINTMAX_C(x)	x##UL | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #ifdef __cplusplus | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #endif /* _STDINT_H */ | ||||||
		Reference in New Issue
	
	Block a user