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] |
On Fri, 25 Oct 2019 09:08:31 -0300 Adhemerval Zanella <adhemerval.zanella@linaro.org> wrote: > From: Zack Weinberg <zackw@panix.com> > > Changes from previous version: > > - Remove warning for use of gettimeofday with a non-null __tz > argument, the conditionals of making this work without false-positive > seems quite specific and fragile (gcc-only, optimized build, > workaround for gcc bug). > > -- > > Also make the public prototype of gettimeofday declare its second > argument with type "void *" unconditionally, consistent with POSIX. > > It is also consistent with POSIX. > > Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu, > powerpc64-linux-gnu, powerpc-linux-gnu, and aarch64-linux-gnu. > > Co-authored-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> > --- > include/sys/time.h | 2 +- > .../unix/sysv/linux/aarch64/gettimeofday.c | 4 ++-- > .../unix/sysv/linux/powerpc/gettimeofday.c | 4 ++-- > sysdeps/unix/sysv/linux/x86/gettimeofday.c | 4 ++-- > time/gettimeofday.c | 4 ++-- > time/sys/time.h | 23 > ++++++++++--------- 6 files changed, 21 insertions(+), 20 deletions(-) > > diff --git a/include/sys/time.h b/include/sys/time.h > index 2bf4297e76..a461295c6a 100644 > --- a/include/sys/time.h > +++ b/include/sys/time.h > @@ -21,7 +21,7 @@ > > # ifndef _ISOMAC > extern int __gettimeofday (struct timeval *__tv, > - struct timezone *__tz); > + void *__tz); > extern int __settimezone (const struct timezone *__tz) > attribute_hidden; > extern int __adjtime (const struct timeval *__delta, > diff --git a/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c > b/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c index > 075af3d0d3..7e772e05ce 100644 --- > a/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c +++ > b/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c @@ -31,7 +31,7 @@ > /* Used as a fallback in the ifunc resolver if VDSO is not available > and for libc.so internal __gettimeofday calls. */ > static int > -__gettimeofday_vsyscall (struct timeval *tv, struct timezone *tz) > +__gettimeofday_vsyscall (struct timeval *restrict tv, void *restrict > tz) { > if (__glibc_unlikely (tz != 0)) > memset (tz, 0, sizeof *tz); > @@ -50,7 +50,7 @@ libc_ifunc (__gettimeofday, > > #else > int > -__gettimeofday (struct timeval *tv, struct timezone *tz) > +__gettimeofday (struct timeval *restrict tv, void *restrict tz) > { > return __gettimeofday_vsyscall (tv, tz); > } > diff --git a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c > b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c index > 02486dee3a..18d8f7cb7a 100644 --- > a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c +++ > b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c @@ -24,7 +24,7 @@ > #include <sysdep-vdso.h> > > static int > -__gettimeofday_syscall (struct timeval *tv, struct timezone *tz) > +__gettimeofday_syscall (struct timeval *restrict tv, void *restrict > tz) { > if (__glibc_unlikely (tz != 0)) > memset (tz, 0, sizeof *tz); > @@ -46,7 +46,7 @@ libc_ifunc (__gettimeofday, > : (void *) __gettimeofday_syscall); > #else > int > -__gettimeofday (struct timeval *tv, struct timezone *tz) > +__gettimeofday (struct timeval *restrict tv, void *restrict tz) > { > return __gettimeofday_syscall (tv, tz); > } > diff --git a/sysdeps/unix/sysv/linux/x86/gettimeofday.c > b/sysdeps/unix/sysv/linux/x86/gettimeofday.c index > cb20e358d8..190127d31e 100644 --- > a/sysdeps/unix/sysv/linux/x86/gettimeofday.c +++ > b/sysdeps/unix/sysv/linux/x86/gettimeofday.c @@ -25,7 +25,7 @@ > #include <sysdep-vdso.h> > > static int > -__gettimeofday_syscall (struct timeval *tv, struct timezone *tz) > +__gettimeofday_syscall (struct timeval *restrict tv, void *restrict > tz) { > if (__glibc_unlikely (tz != 0)) > memset (tz, 0, sizeof *tz); > @@ -45,7 +45,7 @@ libc_ifunc (__gettimeofday, > > #else > int > -__gettimeofday (struct timeval *tv, struct timezone *tz) > +__gettimeofday (struct timeval *restrict tv, void *restrict tz) > { > return __gettimeofday_syscall (tv, tz); > } > diff --git a/time/gettimeofday.c b/time/gettimeofday.c > index e8055b397d..ddaf46f481 100644 > --- a/time/gettimeofday.c > +++ b/time/gettimeofday.c > @@ -23,10 +23,10 @@ > If *TZ is not NULL, clear it. > Returns 0 on success, -1 on errors. */ > int > -___gettimeofday (struct timeval *tv, struct timezone *tz) > +___gettimeofday (struct timeval *restrict tv, void *restrict tz) > { > if (__glibc_unlikely (tz != 0)) > - memset (tz, 0, sizeof *tz); > + memset (tz, 0, sizeof (struct timezone)); > > struct timespec ts; > if (__clock_gettime (CLOCK_REALTIME, &ts)) > diff --git a/time/sys/time.h b/time/sys/time.h > index f8c946f94e..0473dae339 100644 > --- a/time/sys/time.h > +++ b/time/sys/time.h > @@ -54,23 +54,24 @@ struct timezone > int tz_minuteswest; /* Minutes west of GMT. */ > int tz_dsttime; /* Nonzero if DST is ever in > effect. */ }; > - > -typedef struct timezone *__restrict __timezone_ptr_t; > -#else > -typedef void *__restrict __timezone_ptr_t; > #endif > > -/* Get the current time of day and timezone information, > - putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled. > - Returns 0 on success, -1 on errors. > - NOTE: This form of timezone information is obsolete. > - Use the functions and variables declared in <time.h> instead. */ > +/* Get the current time of day, putting it into *TV. > + If TZ is not null, *TZ must be a struct timezone, and both fields > + will be set to zero. > + Calling this function with a non-null TZ is obsolete; > + use localtime etc. instead. > + This function itself is semi-obsolete; > + most callers should use time or clock_gettime instead. */ > extern int gettimeofday (struct timeval *__restrict __tv, > - __timezone_ptr_t __tz) __THROW __nonnull > ((1)); > + void *__restrict __tz) __THROW __nonnull > ((1)); > #ifdef __USE_MISC > /* Set the current time of day and timezone information. > - This call is restricted to the super-user. */ > + This call is restricted to the super-user. > + Setting the timezone in this way is obsolete, but we don't yet > + warn about it because it still has some uses for which there is > + no alternative. */ > extern int settimeofday (const struct timeval *__tv, > const struct timezone *__tz) > __THROW; Reviewed-by: Lukasz Majewski <lukma@denx.de> 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:
pgpR914iqu5EQ.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] |