[PATCH v3] Merge parts of <sys/time.h> from FreeBSD
Sebastian Huber
sebastian.huber@embedded-brains.de
Mon Jul 6 12:11:00 GMT 2015
On 06/07/15 10:08, Corinna Vinschen wrote:
> Hi Marco,
>
> On Jul 5 16:33, Marco Atzeri wrote:
>> On 3/13/2015 1:24 PM, Corinna Vinschen wrote:
>>> Hi Sebastian,
>>>
>>> On Mar 13 11:00, Sebastian Huber wrote:
>>>> Merge parts of the latest <sys/time.h> from FreeBSD to Newlib. This has
>>>> two reasons.
>>> This patch also allowed to remove a Cygwin specific piece of code.
>>> I now pushed your patch as well as the Cygwin ones.
>>>
>>> Thanks,
>>> Corinna
>>>
>>
>> with the current settings, on cygwin with _GNU_SOURCE on
>> /usr/include/sys/time.h
>>
>> bintime_mul(struct bintime *_bt, u_int _x)
>> is included but
>>
>> u_int is not defined
> Thanks, but you forgot to paste this detail from your mail to the
> Cygwin list:
>
>> u_int is defined in
>> /usr/include/sys/types.h
>> and
>> /usr/include/sys/time.h
>> includes it, but it is coveread by a
>>
>> # ifndef _POSIX_SOURCE
> Also your project defines _POSIX_SOURCE.
>
> So while u_int is guarded !_POSIX_SOURCE, the bintime_mul inline function
> using it is guarded __BSD_VISIBLE.
>
> Sebastian, the easy way out would be to redefine bintime_mul to use
> and "unsigned int" as second parameter.
>
> OTOH, shouldn't the affected types in sys/types.h guarded __BSD_VISIBLE,
> too, instead? They are on FreeBSD, afaics.
In FreeBSD sys/types.h we have:
#if __BSD_VISIBLE
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
#ifndef _KERNEL
typedef unsigned short ushort; /* Sys V compatibility */
typedef unsigned int uint; /* Sys V compatibility */
#endif
#endif
So this fits well with the bintime_mul(struct bintime *_bt, u_int _x).
In Newlib sys/types.h (newlib/libc/include/sys/types.h) we have:
# ifndef _POSIX_SOURCE
# define physadr physadr_t
# define quad quad_t
#ifndef _BSDTYPES_DEFINED
/* also defined in mingw/gmon.h and in w32api/winsock[2].h */
#ifndef __u_char_defined
typedef unsigned char u_char;
#define __u_char_defined
#endif
#ifndef __u_short_defined
typedef unsigned short u_short;
#define __u_short_defined
#endif
#ifndef __u_int_defined
typedef unsigned int u_int;
#define __u_int_defined
#endif
#ifndef __u_long_defined
typedef unsigned long u_long;
#define __u_long_defined
#endif
#define _BSDTYPES_DEFINED
#endif
typedef unsigned short ushort; /* System V compatibility */
typedef unsigned int uint; /* System V compatibility */
typedef unsigned long ulong; /* System V compatibility */
# endif /*!_POSIX_SOURCE */
So this uses the _POSIX_SOURCE define. I would adjust this to use the
__BSD_VISIBLE instead like on FreeBSD.
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the Newlib
mailing list