This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [Y2038] [PATCH v2 07/10] include: Add new y2038 safe __kernel_timespec
- From: Arnd Bergmann <arnd at arndb dot de>
- To: Ben Hutchings <ben dot hutchings at codethink dot co dot uk>
- Cc: Deepa Dinamani <deepa dot kernel at gmail dot com>, Thomas Gleixner <tglx at linutronix dot de>, John Stultz <john dot stultz at linaro dot org>, y2038 Mailman List <y2038 at lists dot linaro dot org>, linux-arch <linux-arch at vger dot kernel dot org>, Linux Kernel Mailing List <linux-kernel at vger dot kernel dot org>, Albert ARIBAUD <albert dot aribaud at 3adev dot fr>, GNU C Library <libc-alpha at sourceware dot org>
- Date: Fri, 15 Dec 2017 11:36:01 +0100
- Subject: Re: [Y2038] [PATCH v2 07/10] include: Add new y2038 safe __kernel_timespec
- Authentication-results: sourceware.org; auth=none
- References: <20171127193037.8711-1-deepa.kernel@gmail.com> <20171127193037.8711-8-deepa.kernel@gmail.com> <1513296698.18523.291.camel@codethink.co.uk>
On Fri, Dec 15, 2017 at 1:11 AM, Ben Hutchings
<ben.hutchings@codethink.co.uk> wrote:
> On Mon, 2017-11-27 at 11:30 -0800, Deepa Dinamani wrote:
>> --- a/include/uapi/linux/time.h
>> +++ b/include/uapi/linux/time.h
>> @@ -42,6 +42,13 @@ struct itimerval {
>> > > struct timeval it_value; /* current value */
>> };
>>
>> +#ifndef __kernel_timespec
>> +struct __kernel_timespec {
>> + __kernel_time64_t tv_sec; /* seconds */
>> + long long tv_nsec; /* nanoseconds */
>> +};
>> +#endif
>
> I wonder if it makes sense to override the alignment of this structure?
> (64-bit types are aligned differently on 32-bit vs 64-bit x86, but not
> other compat cases.) It might reduce the need for conversions in
> compat code elsewhere later.
I think the alignment here should be agreed with glibc so they use the
same alignment for their new timespec. I don't see a specific mention
of this at
https://sourceware.org/glibc/wiki/Y2038ProofnessDesign#struct___timespec64
so I'm adding Albert and libc-alpha to Cc for clarification.
I agree it would simplify things a bit to ensure that time64_t and
__timespec64/__kernel_timespec have a 64-bit alignment even on
x86-32, but I don't know if there is precedent for using gcc
__attribute__((aligned(8)) on POSIX data types, of if that might
cause problems e.g. for non-gnu compilers.
Arnd