This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH v3 2/5] y2038: Introduce internal for glibc struct __timespec64
- From: Andreas Schwab <schwab at suse dot de>
- To: Lukasz Majewski <lukma at denx dot de>
- Cc: libc-alpha at sourceware dot org, Stepan Golosunov <stepan at golosunov dot pp dot ru>, Arnd Bergmann <arnd at arndb dot de>, Paul Eggert <eggert at cs dot ucla dot edu>, Joseph Myers <joseph at codesourcery dot com>
- Date: Tue, 07 May 2019 16:13:12 +0200
- Subject: Re: [PATCH v3 2/5] y2038: Introduce internal for glibc struct __timespec64
- References: <20190414220841.20243-1-lukma@denx.de> <20190507131848.30980-1-lukma@denx.de> <20190507131848.30980-3-lukma@denx.de> <mvmv9ymqtnj.fsf@suse.de> <20190507160736.147b31a8@jawa>
On Mai 07 2019, Lukasz Majewski <lukma@denx.de> wrote:
> Hi Andreas,
>
>> On Mai 07 2019, Lukasz Majewski <lukma@denx.de> wrote:
>>
>> > +struct __timespec64
>> > +{
>> > + __time64_t tv_sec; /* Seconds */
>> > +# if BYTE_ORDER == BIG_ENDIAN
>> > + int tv_pad: 32; /* Padding named for checking/setting
>> > */
>> > + __int32_t tv_nsec; /* Nanoseconds */
>> > +# else
>> > + __int32_t tv_nsec; /* Nanoseconds */
>> > + int tv_pad: 32; /* Padding named for checking/setting
>> > */ +# endif
>>
>> No need to use a bitfield, since the padding is not fractional.
>
> That bitfield is for following reasons:
>
> 1. Have a backup plan in the case if we need to copy and clear the
> padding anyway before passing this structure to the kernel in the future
> (as recently we discovered that for example x32 has a kernel bug with
> clearing it).
>
> 2. Kernel syscalls (e.g. clock_settime64) expects on those systems two
> values - each 8 bytes. To avoid any nasty surprises the explicit
> padding was added.
None of that requires a bitfield.
Andreas.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."