Use __machine_*_t_defined for internal types

Newlib defines defaults for internal types via <sys/_types.h> and uses
<machine/_types.h> to let targets define their own type if necessary.

Previously for example

	#ifndef __dev_t_defined
	typedef short __dev_t;
	#endif

However, the __*_t_defined pattern conflicts with the glibc type guard
pattern for user types, e.g. dev_t in this example.  Introduce a
__machine_*_t_defined pattern for internal types (defined by
<machine/_types.h>, used by <sys/_types.h>).  For example

	#ifndef __machine_dev_t_defined
	typedef short __dev_t;
	#endif

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
This commit is contained in:
Sebastian Huber 2016-04-15 13:44:12 +02:00 committed by Corinna Vinschen
parent 9f90ae0435
commit 8a5af1a184
6 changed files with 49 additions and 49 deletions

View File

@ -2,8 +2,18 @@
/* This file defines various typedefs needed by the system calls that support /* This file defines various typedefs needed by the system calls that support
the C library. Basically, they're just the POSIX versions with an '_' the C library. Basically, they're just the POSIX versions with an '_'
prepended. This file lives in the `sys' directory so targets can provide prepended. Targets shall use <machine/_types.h> to define their own
their own if desired (or they can put target dependant conditionals here). internal types if desired.
There are three define patterns used for type definitions. Lets assume
xyz_t is a user type.
The internal type definition uses __machine_xyz_t_defined. It is defined by
<machine/_types.h> to disable a default definition in <sys/_types.h>. It
must not be used in other files.
User type definitions are guarded by __xyz_t_defined in glibc and
_XYZ_T_DECLARED in BSD compatible systems.
*/ */
#ifndef _SYS__TYPES_H #ifndef _SYS__TYPES_H
@ -12,7 +22,7 @@
#include <machine/_types.h> #include <machine/_types.h>
#include <sys/lock.h> #include <sys/lock.h>
#ifndef __off_t_defined #ifndef __machine_off_t_defined
typedef long _off_t; typedef long _off_t;
#endif #endif
@ -22,18 +32,18 @@ typedef signed char __pid_t;
typedef int __pid_t; typedef int __pid_t;
#endif #endif
#ifndef __dev_t_defined #ifndef __machine_dev_t_defined
typedef short __dev_t; typedef short __dev_t;
#endif #endif
#ifndef __uid_t_defined #ifndef __machine_uid_t_defined
typedef unsigned short __uid_t; typedef unsigned short __uid_t;
#endif #endif
#ifndef __gid_t_defined #ifndef __machine_gid_t_defined
typedef unsigned short __gid_t; typedef unsigned short __gid_t;
#endif #endif
#ifndef __off64_t_defined #ifndef __machine_off64_t_defined
__extension__ typedef long long _off64_t; __extension__ typedef long long _off64_t;
#endif #endif
@ -45,7 +55,7 @@ typedef _off_t __off_t;
typedef _off64_t __loff_t; typedef _off64_t __loff_t;
#ifndef __key_t_defined #ifndef __machine_key_t_defined
typedef long __key_t; typedef long __key_t;
#endif #endif
@ -53,18 +63,18 @@ typedef long __key_t;
* We need fpos_t for the following, but it doesn't have a leading "_", * We need fpos_t for the following, but it doesn't have a leading "_",
* so we use _fpos_t instead. * so we use _fpos_t instead.
*/ */
#ifndef __fpos_t_defined #ifndef __machine_fpos_t_defined
typedef long _fpos_t; /* XXX must match off_t in <sys/types.h> */ typedef long _fpos_t; /* XXX must match off_t in <sys/types.h> */
/* (and must be `long' for now) */ /* (and must be `long' for now) */
#endif #endif
#ifdef __LARGE64_FILES #ifdef __LARGE64_FILES
#ifndef __fpos64_t_defined #ifndef __machine_fpos64_t_defined
typedef _off64_t _fpos64_t; typedef _off64_t _fpos64_t;
#endif #endif
#endif #endif
#ifndef __ssize_t_defined #ifndef __machine_ssize_t_defined
#ifdef __SIZE_TYPE__ #ifdef __SIZE_TYPE__
/* If __SIZE_TYPE__ is defined (gcc) we define ssize_t based on size_t. /* If __SIZE_TYPE__ is defined (gcc) we define ssize_t based on size_t.
We simply change "unsigned" to "signed" for this single definition We simply change "unsigned" to "signed" for this single definition
@ -84,7 +94,7 @@ typedef long _ssize_t;
#define __need_wint_t #define __need_wint_t
#include <stddef.h> #include <stddef.h>
#ifndef __mbstate_t_defined #ifndef __machine_mbstate_t_defined
/* Conversion state information. */ /* Conversion state information. */
typedef struct typedef struct
{ {
@ -97,11 +107,11 @@ typedef struct
} _mbstate_t; } _mbstate_t;
#endif #endif
#ifndef __flock_t_defined #ifndef __machine_flock_t_defined
typedef _LOCK_RECURSIVE_T _flock_t; typedef _LOCK_RECURSIVE_T _flock_t;
#endif #endif
#ifndef __iconv_t_defined #ifndef __machine_iconv_t_defined
/* Iconv descriptor type */ /* Iconv descriptor type */
typedef void *_iconv_t; typedef void *_iconv_t;
#endif #endif

View File

@ -31,7 +31,7 @@
#include <machine/_default_types.h> #include <machine/_default_types.h>
#define __ssize_t_defined #define __machine_ssize_t_defined
typedef long signed int _ssize_t; typedef long signed int _ssize_t;
#endif /* _MACHINE__TYPES_H */ #endif /* _MACHINE__TYPES_H */

View File

@ -39,22 +39,22 @@
/* /*
* fpos_t large enough for either 32 or 64 bit ppc glibc fpos_t. * fpos_t large enough for either 32 or 64 bit ppc glibc fpos_t.
*/ */
#define __fpos_t_defined #define __machine_fpos_t_defined
typedef struct { typedef struct {
char __pos[16]; char __pos[16];
} _fpos_t; } _fpos_t;
#ifdef __LARGE64_FILES #ifdef __LARGE64_FILES
#define __fpos64_t_defined #define __machine_fpos64_t_defined
typedef _fpos_t _fpos64_t; typedef _fpos_t _fpos64_t;
#endif #endif
#define __dev_t_defined #define __machine_dev_t_defined
typedef int __dev_t; typedef int __dev_t;
#define __uid_t_defined #define __machine_uid_t_defined
typedef unsigned int __uid_t; typedef unsigned int __uid_t;
#define __gid_t_defined #define __machine_gid_t_defined
typedef unsigned int __gid_t; typedef unsigned int __gid_t;
#endif /* _MACHINE__TYPES_H */ #endif /* _MACHINE__TYPES_H */

View File

@ -7,7 +7,7 @@ char * _EXFUN(_gcvt,(struct _reent *, double , int , char *, char, int));
char *__locale_charset(_NOARGS); char *__locale_charset(_NOARGS);
#ifndef __mbstate_t_defined #ifndef __machine_mbstate_t_defined
#include <wchar.h> #include <wchar.h>
#endif #endif

View File

@ -1,35 +1,25 @@
/*
* $Id$
*/
#ifndef _MACHINE__TYPES_H #ifndef _MACHINE__TYPES_H
#define _MACHINE__TYPES_H #define _MACHINE__TYPES_H
#include <machine/_default_types.h> #include <machine/_default_types.h>
typedef __int32_t blksize_t; typedef __int32_t blksize_t;
typedef __int32_t blkcnt_t; typedef __int32_t blkcnt_t;
typedef __uint64_t __dev_t; typedef __uint64_t __dev_t;
#define __dev_t_defined 1 #define __machine_dev_t_defined
#if defined(__arm__) || defined(__i386__) || defined(__m68k__) || defined(__mips__) || defined(__PPC__) || defined(__sparc__) #if defined(__arm__) || defined(__i386__) || defined(__m68k__) || defined(__mips__) || defined(__PPC__) || defined(__sparc__)
/* Use 64bit types */ typedef __int64_t _off_t;
typedef __int64_t _off_t;
#define __off_t_defined 1
typedef __int64_t _fpos_t;
#define __fpos_t_defined 1
#else #else
/* Use 32bit types */ typedef __int32_t _off_t;
typedef __int32_t _off_t;
#define __off_t_defined 1
typedef __int32_t _fpos_t;
#define __fpos_t_defined 1
#endif #endif
#define __machine_off_t_defined
typedef __uint32_t _mode_t; typedef _off_t _fpos_t;
#define __mode_t_defined 1 #define __machine_fpos_t_defined
#endif typedef __uint32_t _mode_t;
#define __machine_mode_t_defined
#endif /* _MACHINE__TYPES_H */

View File

@ -11,16 +11,16 @@ typedef __uint16_t __uid16_t;
typedef __uint16_t __gid16_t; typedef __uint16_t __gid16_t;
#endif #endif
#define __dev_t_defined #define __machine_dev_t_defined
typedef __uint32_t __dev_t; typedef __uint32_t __dev_t;
#define __uid_t_defined #define __machine_uid_t_defined
typedef __uint32_t __uid_t; typedef __uint32_t __uid_t;
#define __gid_t_defined #define __machine_gid_t_defined
typedef __uint32_t __gid_t; typedef __uint32_t __gid_t;
#define __key_t_defined #define __machine_key_t_defined
typedef long long __key_t; typedef long long __key_t;
#endif /* _MACHINE__TYPES_H */ #endif /* _MACHINE__TYPES_H */