This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 2/6] y2038: hurd: Provide __clock_settime64 function


Hi Adhemerval,

> On 18/01/2020 04:20, Lukasz Majewski wrote:
> > For Linux glibc ports the __TIMESIZE == 64 ensures proper aliasing
> > for __clock_settime64 (to __clock_settime).
> > When __TIMESIZE != 64 (like ARM32, PPC) the glibc expects separate
> > definition of the __clock_settime64.
> > 
> > The HURD port only provides __clock_settime, so this patch adds
> > __clock_settime64 as a tiny wrapper on it.
> > ---
> >  sysdeps/mach/hurd/clock_settime.c | 9 +++++++++
> >  1 file changed, 9 insertions(+)
> > 
> > diff --git a/sysdeps/mach/hurd/clock_settime.c
> > b/sysdeps/mach/hurd/clock_settime.c index 2c77bad71a..db1ba860dc
> > 100644 --- a/sysdeps/mach/hurd/clock_settime.c
> > +++ b/sysdeps/mach/hurd/clock_settime.c
> > @@ -53,3 +53,12 @@ versioned_symbol (libc, __clock_settime,
> > clock_settime, GLIBC_2_17); strong_alias (__clock_settime,
> > __clock_settime_2); compat_symbol (libc, __clock_settime_2,
> > clock_settime, GLIBC_2_2); #endif
> > +
> > +int
> > +__clock_settime64 (clockid_t clock_id, const struct __timespec64
> > *ts64) +{
> > +  struct timespec ts = valid_timespec64_to_timespec (*ts64);
> > +
> > +  return __clock_settime (clock_id, &ts);
> > +}
> > +libc_hidden_def (__clock_settime64)
> >   
> 
> As for https://sourceware.org/ml/libc-alpha/2020-01/msg00445.html I
> don't think this patch is really required now.

I think that it is required to allow using __clock_settime64() calls
internally in glibc.

The __clock_settime64 will be aliased to __clock_settime for archs with
__TIMESIZE==64 [*]. It is important for archs with Y2038 support - it
will allow in-glibc internal use of 64 bit time (i.e. by using struct
__timespec64).

Ports which are using Linux kernel already have it defined. The problem
is with HURD, which misses this definition.

(Please correct me if I'm wrong - but it seems to me that HURD is not
using 64 bit time?)

I thought about some kind of alias (weak, strong, #define), but the
problem was with passed data types - as __clock_settime64 requires
struct __timespec64.


Note:

[*] - __TIMESIZE indicates the default size of time_t (but on Y2038
safe ARM32 bit systems we do have __TIMESIZE=32 but we do have time_t
defined as __time64_t [1]).

Links:

[1] -
https://github.com/lmajewski/y2038_glibc/commit/e03c7188c72dd78d7141cf88f24dd2a5fd14c4f1#diff-c051022b496f12bd9028edb46b8ec04dR7




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

Attachment: pgp6JJT3RuRb7.pgp
Description: OpenPGP digital signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]