[PATCH] SPU use 4 bytes for uid_t, gid_t and dev_t
Jeff Johnston
jjohnstn@redhat.com
Thu Sep 20 07:17:00 GMT 2007
Patch checked in. Thanks Patrick.
-- Jeff J.
Patrick Mansfield wrote:
> On Tue, Sep 11, 2007 at 03:24:01PM -0400, Jeff Johnston wrote:
>
>> Still needs a bit of tweaking. I want the new underscore types to be
>> double-underscored, e.g. __uid_t. Historically, we have
>> single-underscored types, but we should be using double-underscored
>> lower-case types to keep out of the user's name-space.
>
> OK. There are still some pre-existing types using one underscore.
>
>> Secondly, leave the #if __CYGWIN__ checks alone in sys/types.h. They
>> are there because Cygwin screws up our header system by not having a
>> libc/sys/cygwin directory and later in the file, includes their own
>> magic types header. Some clean-up is needed for Cygwin as I am not a
>> fan of this. You can move the __rtems__ stuff over as you did. So you
>> would have the following example for dev_t, in sys/types.h:
>>
>> #ifndef __CYGWIN__
>> typedef __dev_t dev_t;
>> #endif
>
> I folded the above into the other CYGWIN ifndef.
>
>> The new flags are fine, but I would like you to lower-case all the flags
>> in sys/_types.h (including the ones not used by SPU and the previous
>> ones for fpos_t and fpos64_t).
>
> I did not find any defines of the (uppercase) __nnn_T_DEFINED outside of
> the spu/_types.h.
>
> Modified patch:
>
> newlib ChangeLog:
>
> 2007-09-11 Patrick Mansfield <patmans@us.ibm.com>
>
> * libc/include/sys/types.h: Use __dev_t, __uid_t, and __gid_t to
> typedef dev_t, gid_t, and uid_t.
> * libc/include/sys/_types.h: Move previous dev_t, uid_t and gid_t
> types.h code to here, but typedef __dev_t, __uid_t, and __gid_t instead.
> Change to lower case for all __foo_t_defined names.
> * libc/machine/spu/machine/_types.h: Add SPU specific __dev_t,
> __uid_t, and __gid_t making them all four bytes. Change to lower case
> for all __foo_t_defined names.
>
> Index: quilt/newlib/libc/include/sys/types.h
> ===================================================================
> --- quilt.orig/newlib/libc/include/sys/types.h
> +++ quilt/newlib/libc/include/sys/types.h
> @@ -158,20 +158,11 @@ typedef int32_t register_t;
> * how the file was compiled (e.g. -mint16 vs -mint32, etc.).
> */
>
> -#if defined(__rtems__)
> -/* device numbers are 32-bit major and and 32-bit minor */
> -typedef unsigned long long dev_t;
> -#else
> -#ifndef __CYGWIN__
> -typedef short dev_t;
> -#endif
> -#endif
> -
> #ifndef __CYGWIN__ /* which defines these types in it's own types.h. */
> typedef long off_t;
> -
> -typedef unsigned short uid_t;
> -typedef unsigned short gid_t;
> +typedef __dev_t dev_t;
> +typedef __uid_t uid_t;
> +typedef __gid_t gid_t;
> #endif
>
> typedef int pid_t;
> Index: quilt/newlib/libc/machine/spu/machine/_types.h
> ===================================================================
> --- quilt.orig/newlib/libc/machine/spu/machine/_types.h
> +++ quilt/newlib/libc/machine/spu/machine/_types.h
> @@ -39,14 +39,22 @@
> /*
> * fpos_t large enough for either 32 or 64 bit ppc glibc fpos_t.
> */
> -#define __FPOS_T_DEFINED
> +#define __fpos_t_defined
> typedef struct {
> char __pos[16];
> } _fpos_t;
>
> #ifdef __LARGE64_FILES
> -#define __FPOS64_T_DEFINED
> +#define __fpos64_t_defined
> typedef _fpos_t _fpos64_t;
> #endif
>
> +#define __dev_t_defined
> +typedef int __dev_t;
> +
> +#define __uid_t_defined
> +typedef unsigned int __uid_t;
> +#define __gid_t_defined
> +typedef unsigned int __gid_t;
> +
> #endif /* _MACHINE__TYPES_H */
> Index: quilt/newlib/libc/include/sys/_types.h
> ===================================================================
> --- quilt.orig/newlib/libc/include/sys/_types.h
> +++ quilt/newlib/libc/include/sys/_types.h
> @@ -12,11 +12,27 @@
> #include <machine/_types.h>
> #include <sys/lock.h>
>
> -#ifndef __OFF_T_DEFINED
> +#ifndef __off_t_defined
> typedef long _off_t;
> #endif
>
> -#ifndef __OFF64_T_DEFINED
> +#if defined(__rtems__)
> +/* device numbers are 32-bit major and and 32-bit minor */
> +typedef unsigned long long __dev_t;
> +#else
> +#ifndef __dev_t_defined
> +typedef short __dev_t;
> +#endif
> +#endif
> +
> +#ifndef __uid_t_defined
> +typedef unsigned short __uid_t;
> +#endif
> +#ifndef __gid_t_defined
> +typedef unsigned short __gid_t;
> +#endif
> +
> +#ifndef __off64_t_defined
> __extension__ typedef long long _off64_t;
> #endif
>
> @@ -24,18 +40,18 @@ __extension__ typedef long long _off64_t
> * We need fpos_t for the following, but it doesn't have a leading "_",
> * so we use _fpos_t instead.
> */
> -#ifndef __FPOS_T_DEFINED
> +#ifndef __fpos_t_defined
> typedef long _fpos_t; /* XXX must match off_t in <sys/types.h> */
> /* (and must be `long' for now) */
> #endif
>
> #ifdef __LARGE64_FILES
> -#ifndef __FPOS64_T_DEFINED
> +#ifndef __fpos64_t_defined
> typedef _off64_t _fpos64_t;
> #endif
> #endif
>
> -#ifndef __SSIZE_T_DEFINED
> +#ifndef __ssize_t_defined
> #if defined(__INT_MAX__) && __INT_MAX__ == 2147483647
> typedef int _ssize_t;
> #else
> @@ -46,7 +62,7 @@ typedef long _ssize_t;
> #define __need_wint_t
> #include <stddef.h>
>
> -#ifndef __MBSTATE_T_DEFINED
> +#ifndef __mbstate_t_defined
> /* Conversion state information. */
> typedef struct
> {
> @@ -59,11 +75,11 @@ typedef struct
> } _mbstate_t;
> #endif
>
> -#ifndef __FLOCK_T_DEFINED
> +#ifndef __flock_t_defined
> typedef _LOCK_RECURSIVE_T _flock_t;
> #endif
>
> -#ifndef __ICONV_T_DEFINED
> +#ifndef __iconv_t_defined
> /* Iconv descriptor type */
> typedef void *_iconv_t;
> #endif
More information about the Newlib
mailing list