[PATCH v3 2/5] y2038: Introduce internal for glibc struct __timespec64
Lukasz Majewski
lukma@denx.de
Tue May 7 14:07:00 GMT 2019
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.
>
> Andreas.
>
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20190507/6c2514c2/attachment.sig>
More information about the Libc-alpha
mailing list