public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/5] y2038: Replace __clock_gettime with __clock_gettime64
@ 2020-03-24 13:18 Lukasz Majewski
  2020-03-24 13:18 ` [PATCH 1/5] y2038: Export __clock_gettime64 to be usable in other libraries Lukasz Majewski
                   ` (4 more replies)
  0 siblings, 5 replies; 14+ messages in thread
From: Lukasz Majewski @ 2020-03-24 13:18 UTC (permalink / raw)
  To: Joseph Myers, Adhemerval Zanella
  Cc: Alistair Francis, Alistair Francis, GNU C Library,
	Florian Weimer, Andreas Schwab, Lukasz Majewski

This patch series starts the conversion of __clock_gettime calls to
__clock_gettime64 as the latter supports 64 bit time on archs with 
__WORDSIZE == 32 and __TIMESIZE != 64.

On purpose the nptl and pthreads have been omitted, as for those separate patch
sets will be prepared.
It is an open question if sunrpc shall be converted or not.

This patch series also provides __clock_gettime64 wrapper for HURD to allow
conversion of generic in-glibc code (as HURD uses them - like e.g. pthreads).

Special care had to be taken for s390 as it has its own definition of utmp.h
and hence requires using TIMESPEC_TO_TIMEVAL macro.

Lukasz Majewski (5):
  y2038: Export __clock_gettime64 to be usable in other libraries
  y2038: hurd: Provide __clock_gettime64 function
  y2038: inet: Convert inet deadline to support 64 bit time
  y2038: nscd: Modify nscd_helper to use __clock_gettime64
  y2038: Replace __clock_gettime with __clock_gettime64

 benchtests/bench-timing.h                       |  2 +-
 include/random-bits.h                           |  4 ++--
 inet/deadline.c                                 |  4 ++--
 inet/net-internal.h                             |  5 +++--
 login/logout.c                                  |  8 ++++++--
 login/logwtmp.c                                 | 10 +++++++---
 nis/nis_call.c                                  |  6 +++---
 nscd/nscd_helper.c                              | 17 +++++++++--------
 sysdeps/generic/hp-timing.h                     |  4 ++--
 sysdeps/generic/memusage.h                      |  4 ++--
 sysdeps/mach/clock_gettime.c                    | 14 ++++++++++++++
 .../unix/sysv/linux/alpha/osf_gettimeofday.c    |  4 ++--
 sysdeps/unix/sysv/linux/clock.c                 |  7 ++-----
 time/Versions                                   |  1 +
 14 files changed, 56 insertions(+), 34 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/5] y2038: Export __clock_gettime64 to be usable in other libraries
  2020-03-24 13:18 [PATCH 0/5] y2038: Replace __clock_gettime with __clock_gettime64 Lukasz Majewski
@ 2020-03-24 13:18 ` Lukasz Majewski
  2020-03-24 13:18 ` [PATCH 2/5] y2038: hurd: Provide __clock_gettime64 function Lukasz Majewski
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 14+ messages in thread
From: Lukasz Majewski @ 2020-03-24 13:18 UTC (permalink / raw)
  To: Joseph Myers, Adhemerval Zanella
  Cc: Alistair Francis, Alistair Francis, GNU C Library,
	Florian Weimer, Andreas Schwab, Lukasz Majewski

In the glibc project calls to clock_gettime shall be replaced with
__clock_gettime64, which is supporting 64 bit time.
To allow that the __clock_gettime64 needs to be exported as a GLIBC_PRIVATE
symbol.
---
 time/Versions | 1 +
 1 file changed, 1 insertion(+)

diff --git a/time/Versions b/time/Versions
index 8788e192ce..df22ac7f6a 100644
--- a/time/Versions
+++ b/time/Versions
@@ -77,5 +77,6 @@ libc {
   GLIBC_PRIVATE {
     # same as clock_gettime; used in other libraries
     __clock_gettime;
+    __clock_gettime64;
   }
 }
-- 
2.20.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 2/5] y2038: hurd: Provide __clock_gettime64 function
  2020-03-24 13:18 [PATCH 0/5] y2038: Replace __clock_gettime with __clock_gettime64 Lukasz Majewski
  2020-03-24 13:18 ` [PATCH 1/5] y2038: Export __clock_gettime64 to be usable in other libraries Lukasz Majewski
@ 2020-03-24 13:18 ` Lukasz Majewski
  2020-03-24 15:52   ` Alistair Francis
  2020-03-24 13:18 ` [PATCH 3/5] y2038: inet: Convert inet deadline to support 64 bit time Lukasz Majewski
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 14+ messages in thread
From: Lukasz Majewski @ 2020-03-24 13:18 UTC (permalink / raw)
  To: Joseph Myers, Adhemerval Zanella
  Cc: Alistair Francis, Alistair Francis, GNU C Library,
	Florian Weimer, Andreas Schwab, Lukasz Majewski, Samuel Thibault

For Linux glibc ports the __TIMESIZE == 64 ensures proper aliasing for
__clock_gettime64 (to __clock_gettime).
When __TIMESIZE != 64 (like ARM32, PPC) the glibc expects separate definition
of the __clock_gettime64.

The HURD port only provides __clock_gettime, so this patch adds
__clock_gettime64 as a tiny wrapper on it.
Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
 sysdeps/mach/clock_gettime.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/sysdeps/mach/clock_gettime.c b/sysdeps/mach/clock_gettime.c
index ac3547df3c..fbd80536d5 100644
--- a/sysdeps/mach/clock_gettime.c
+++ b/sysdeps/mach/clock_gettime.c
@@ -49,3 +49,17 @@ versioned_symbol (libc, __clock_gettime, clock_gettime, GLIBC_2_17);
 strong_alias (__clock_gettime, __clock_gettime_2);
 compat_symbol (libc, __clock_gettime_2, clock_gettime, GLIBC_2_2);
 #endif
+
+int
+__clock_gettime64 (clockid_t clock_id, struct __timespec64 *ts64)
+{
+  struct timespec ts;
+  int ret;
+
+  ret = __clock_gettime (clock_id, &ts);
+  if (ret == 0)
+    *ts64 = valid_timespec_to_timespec64 (ts);
+
+  return ret;
+}
+libc_hidden_def (__clock_gettime64)
-- 
2.20.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 3/5] y2038: inet: Convert inet deadline to support 64 bit time
  2020-03-24 13:18 [PATCH 0/5] y2038: Replace __clock_gettime with __clock_gettime64 Lukasz Majewski
  2020-03-24 13:18 ` [PATCH 1/5] y2038: Export __clock_gettime64 to be usable in other libraries Lukasz Majewski
  2020-03-24 13:18 ` [PATCH 2/5] y2038: hurd: Provide __clock_gettime64 function Lukasz Majewski
@ 2020-03-24 13:18 ` Lukasz Majewski
  2020-03-24 14:37   ` Adhemerval Zanella
  2020-03-24 13:18 ` [PATCH 4/5] y2038: nscd: Modify nscd_helper to use __clock_gettime64 Lukasz Majewski
  2020-03-24 13:18 ` [PATCH 5/5] y2038: Replace __clock_gettime with __clock_gettime64 Lukasz Majewski
  4 siblings, 1 reply; 14+ messages in thread
From: Lukasz Majewski @ 2020-03-24 13:18 UTC (permalink / raw)
  To: Joseph Myers, Adhemerval Zanella
  Cc: Alistair Francis, Alistair Francis, GNU C Library,
	Florian Weimer, Andreas Schwab, Lukasz Majewski

This change brings 64 bit time support to inet deadline related code for
architectures with __WORDSIZE == 32 && __TIMESIZE != 64.

It is also safe to replace struct timespec with struct __timespec64 in
deadline related structures as:

- The __deadline_to_ms () returns the number of miliseconds to deadline to
  be used with __poll (and hence it is a relative value).
- To calculate the deadline from timeval (which will be converted latter)
  the uintmax_t type is used (unsinged long long int).
---
 inet/deadline.c     | 4 ++--
 inet/net-internal.h | 5 +++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/inet/deadline.c b/inet/deadline.c
index ebf9a4f52c..eac7afd1a8 100644
--- a/inet/deadline.c
+++ b/inet/deadline.c
@@ -28,8 +28,8 @@ struct deadline_current_time
 __deadline_current_time (void)
 {
   struct deadline_current_time result;
-  if (__clock_gettime (CLOCK_MONOTONIC, &result.current) != 0)
-    __clock_gettime (CLOCK_REALTIME, &result.current);
+  if (__clock_gettime64 (CLOCK_MONOTONIC, &result.current) != 0)
+    __clock_gettime64 (CLOCK_REALTIME, &result.current);
   assert (result.current.tv_sec >= 0);
   return result;
 }
diff --git a/inet/net-internal.h b/inet/net-internal.h
index 3ca301a9be..50c7e1c482 100644
--- a/inet/net-internal.h
+++ b/inet/net-internal.h
@@ -24,6 +24,7 @@
 #include <stdint.h>
 #include <sys/time.h>
 #include <libc-diag.h>
+#include <struct___timespec64.h>
 
 int __inet6_scopeid_pton (const struct in6_addr *address,
                           const char *scope, uint32_t *result);
@@ -76,7 +77,7 @@ enum idna_name_classification __idna_name_classify (const char *name)
    timeouts and vice versa.  */
 struct deadline_current_time
 {
-  struct timespec current;
+  struct __timespec64 current;
 };
 
 /* Return the current time.  Terminates the process if the current
@@ -86,7 +87,7 @@ struct deadline_current_time __deadline_current_time (void) attribute_hidden;
 /* Computed absolute deadline.  */
 struct deadline
 {
-  struct timespec absolute;
+  struct __timespec64 absolute;
 };
 
 
-- 
2.20.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4/5] y2038: nscd: Modify nscd_helper to use __clock_gettime64
  2020-03-24 13:18 [PATCH 0/5] y2038: Replace __clock_gettime with __clock_gettime64 Lukasz Majewski
                   ` (2 preceding siblings ...)
  2020-03-24 13:18 ` [PATCH 3/5] y2038: inet: Convert inet deadline to support 64 bit time Lukasz Majewski
@ 2020-03-24 13:18 ` Lukasz Majewski
  2020-03-24 15:54   ` Alistair Francis
  2020-03-24 13:18 ` [PATCH 5/5] y2038: Replace __clock_gettime with __clock_gettime64 Lukasz Majewski
  4 siblings, 1 reply; 14+ messages in thread
From: Lukasz Majewski @ 2020-03-24 13:18 UTC (permalink / raw)
  To: Joseph Myers, Adhemerval Zanella
  Cc: Alistair Francis, Alistair Francis, GNU C Library,
	Florian Weimer, Andreas Schwab, Lukasz Majewski

The nscd/nscd_helper.c uses __clock_gettime to get current time and on this
basis calculate the relative timeout for poll.
By using __clock_gettime64 on systems with __WORDSIZE == 32 && __TIMESIZE != 64
the timeout is correctly calculated after time_t overflow.
---
 nscd/nscd_helper.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/nscd/nscd_helper.c b/nscd/nscd_helper.c
index d2d7d15f26..a4f3312f90 100644
--- a/nscd/nscd_helper.c
+++ b/nscd/nscd_helper.c
@@ -37,6 +37,7 @@
 #include <not-cancel.h>
 #include <kernel-features.h>
 #include <nss.h>
+#include <struct___timespec64.h>
 
 #include "nscd-client.h"
 
@@ -59,10 +60,10 @@ wait_on_socket (int sock, long int usectmo)
       /* Handle the case where the poll() call is interrupted by a
 	 signal.  We cannot just use TEMP_FAILURE_RETRY since it might
 	 lead to infinite loops.  */
-      struct timespec now;
-      __clock_gettime (CLOCK_REALTIME, &now);
-      long int end = (now.tv_sec * 1000 + usectmo
-                      + (now.tv_nsec + 500000) / 1000000);
+      struct __timespec64 now;
+      __clock_gettime64 (CLOCK_REALTIME, &now);
+      int64_t end = (now.tv_sec * 1000 + usectmo
+                     + (now.tv_nsec + 500000) / 1000000);
       long int timeout = usectmo;
       while (1)
 	{
@@ -71,7 +72,7 @@ wait_on_socket (int sock, long int usectmo)
 	    break;
 
 	  /* Recompute the timeout time.  */
-          __clock_gettime (CLOCK_REALTIME, &now);
+          __clock_gettime64 (CLOCK_REALTIME, &now);
 	  timeout = end - ((now.tv_sec * 1000
                             + (now.tv_nsec + 500000) / 1000000));
 	}
@@ -193,7 +194,7 @@ open_socket (request_type type, const char *key, size_t keylen)
   memcpy (reqdata->key, key, keylen);
 
   bool first_try = true;
-  struct timespec tvend = { 0, 0 };
+  struct __timespec64 tvend = { 0, 0 };
   while (1)
     {
 #ifndef MSG_NOSIGNAL
@@ -212,8 +213,8 @@ open_socket (request_type type, const char *key, size_t keylen)
 
       /* The daemon is busy wait for it.  */
       int to;
-      struct timespec now;
-      __clock_gettime (CLOCK_REALTIME, &now);
+      struct __timespec64 now;
+      __clock_gettime64 (CLOCK_REALTIME, &now);
       if (first_try)
 	{
 	  tvend.tv_nsec = now.tv_nsec;
-- 
2.20.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 5/5] y2038: Replace __clock_gettime with __clock_gettime64
  2020-03-24 13:18 [PATCH 0/5] y2038: Replace __clock_gettime with __clock_gettime64 Lukasz Majewski
                   ` (3 preceding siblings ...)
  2020-03-24 13:18 ` [PATCH 4/5] y2038: nscd: Modify nscd_helper to use __clock_gettime64 Lukasz Majewski
@ 2020-03-24 13:18 ` Lukasz Majewski
  2020-03-24 14:26   ` Andreas Schwab
  4 siblings, 1 reply; 14+ messages in thread
From: Lukasz Majewski @ 2020-03-24 13:18 UTC (permalink / raw)
  To: Joseph Myers, Adhemerval Zanella
  Cc: Alistair Francis, Alistair Francis, GNU C Library,
	Florian Weimer, Andreas Schwab, Lukasz Majewski

The __clock_gettime internal function is not supporting 64 bit time on
architectures with __WORDSIZE == 32 and __TIMESIZE != 64 (like e.g. ARM 32
bit).

The __clock_gettime64 shall be used instead in the glibc itself as it
supports 64 bit time on those systems.
This change does not bring any change to systems with __WORDSIZE == 64 as
for them the __clock_gettime64 is aliased to __clock_gettime
(in ./include/time.h).

The S390 requires special treatment as it has its own definition of
utmp.h at sysdeps/unix/sysv/linux/s390/bits/utmp.h
As it uses int64_t fields for tv_sec and tv_usec the generic
TIMESPEC_TO_TIMEVAL macro must be used.
---
 benchtests/bench-timing.h                        |  2 +-
 include/random-bits.h                            |  4 ++--
 login/logout.c                                   |  8 ++++++--
 login/logwtmp.c                                  | 10 +++++++---
 nis/nis_call.c                                   |  6 +++---
 sysdeps/generic/hp-timing.h                      |  4 ++--
 sysdeps/generic/memusage.h                       |  4 ++--
 sysdeps/unix/sysv/linux/alpha/osf_gettimeofday.c |  4 ++--
 sysdeps/unix/sysv/linux/clock.c                  |  7 ++-----
 9 files changed, 27 insertions(+), 22 deletions(-)

diff --git a/benchtests/bench-timing.h b/benchtests/bench-timing.h
index 5b9a8384bb..a0d6f82465 100644
--- a/benchtests/bench-timing.h
+++ b/benchtests/bench-timing.h
@@ -18,7 +18,7 @@
 
 #undef attribute_hidden
 #define attribute_hidden
-#define __clock_gettime clock_gettime
+#define __clock_gettime __clock_gettime64
 #include <hp-timing.h>
 #include <stdint.h>
 
diff --git a/include/random-bits.h b/include/random-bits.h
index fd3fa01f9b..7561e55ca6 100644
--- a/include/random-bits.h
+++ b/include/random-bits.h
@@ -30,8 +30,8 @@
 static inline uint32_t
 random_bits (void)
 {
-  struct timespec tv;
-  __clock_gettime (CLOCK_MONOTONIC, &tv);
+  struct __timespec64 tv;
+  __clock_gettime64 (CLOCK_MONOTONIC, &tv);
   /* Shuffle the lower bits to minimize the clock bias.  */
   uint32_t ret = tv.tv_nsec ^ tv.tv_sec;
   ret ^= (ret << 24) | (ret >> 8);
diff --git a/login/logout.c b/login/logout.c
index 7653fe8886..a421d07301 100644
--- a/login/logout.c
+++ b/login/logout.c
@@ -47,9 +47,13 @@ logout (const char *line)
       memset (ut->ut_name, '\0', sizeof ut->ut_name);
       memset (ut->ut_host, '\0', sizeof ut->ut_host);
 
-      struct timespec ts;
-      __clock_gettime (CLOCK_REALTIME, &ts);
+      struct __timespec64 ts;
+      __clock_gettime64 (CLOCK_REALTIME, &ts);
+#if __WORDSIZE_TIME64_COMPAT32 || defined __s390x__ || defined __s390__
       TIMESPEC_TO_TIMEVAL (&ut->ut_tv, &ts);
+#else
+      ut->ut_tv = valid_timespec64_to_timeval (ts);
+#endif
       ut->ut_type = DEAD_PROCESS;
 
       if (pututline (ut) != NULL)
diff --git a/login/logwtmp.c b/login/logwtmp.c
index 90406acc3d..f823e71d59 100644
--- a/login/logwtmp.c
+++ b/login/logwtmp.c
@@ -21,6 +21,7 @@
 #include <time.h>
 #include <unistd.h>
 #include <utmp.h>
+#include <struct___timespec64.h>
 
 
 void
@@ -36,9 +37,12 @@ logwtmp (const char *line, const char *name, const char *host)
   strncpy (ut.ut_name, name, sizeof ut.ut_name);
   strncpy (ut.ut_host, host, sizeof ut.ut_host);
 
-  struct timespec ts;
-  __clock_gettime (CLOCK_REALTIME, &ts);
+  struct __timespec64 ts;
+  __clock_gettime64 (CLOCK_REALTIME, &ts);
+#if __WORDSIZE_TIME64_COMPAT32 || defined __s390x__ || defined __s390__
   TIMESPEC_TO_TIMEVAL (&ut.ut_tv, &ts);
-
+#else
+  ut.ut_tv = valid_timespec64_to_timeval (ts);
+#endif
   updwtmp (_PATH_WTMP, &ut);
 }
diff --git a/nis/nis_call.c b/nis/nis_call.c
index 92c70e97aa..9c6f62a753 100644
--- a/nis/nis_call.c
+++ b/nis/nis_call.c
@@ -709,7 +709,7 @@ __nisfind_server (const_nis_name name, int search_parent,
   nis_error status;
   directory_obj *obj;
   struct timeval now;
-  struct timespec ts;
+  struct __timespec64 ts;
   unsigned int server_used = ~0;
   unsigned int current_ep = ~0;
 
@@ -719,8 +719,8 @@ __nisfind_server (const_nis_name name, int search_parent,
   if (*dir != NULL)
     return NIS_SUCCESS;
 
-  __clock_gettime (CLOCK_REALTIME, &ts);
-  TIMESPEC_TO_TIMEVAL (&now, &ts);
+  __clock_gettime64 (CLOCK_REALTIME, &ts);
+  now = valid_timespec64_to_timeval (ts);
 
   if ((flags & NO_CACHE) == 0)
     *dir = nis_server_cache_search (name, search_parent, &server_used,
diff --git a/sysdeps/generic/hp-timing.h b/sysdeps/generic/hp-timing.h
index e2d7447212..af9d92f7f7 100644
--- a/sysdeps/generic/hp-timing.h
+++ b/sysdeps/generic/hp-timing.h
@@ -34,8 +34,8 @@ typedef uint64_t hp_timing_t;
    vDSO symbol.  */
 #define HP_TIMING_NOW(var) \
 ({								\
-  struct timespec tv;						\
-  __clock_gettime (CLOCK_MONOTONIC, &tv);			\
+  struct __timespec64 tv;						\
+  __clock_gettime64 (CLOCK_MONOTONIC, &tv);			\
   (var) = (tv.tv_nsec + UINT64_C(1000000000) * tv.tv_sec);	\
 })
 
diff --git a/sysdeps/generic/memusage.h b/sysdeps/generic/memusage.h
index a111864b0b..91e56d24de 100644
--- a/sysdeps/generic/memusage.h
+++ b/sysdeps/generic/memusage.h
@@ -28,9 +28,9 @@
 #ifndef GETTIME
 # define GETTIME(low,high)						   \
   {									   \
-    struct timespec now;						   \
+    struct __timespec64 now;						   \
     uint64_t usecs;							   \
-    clock_gettime (CLOCK_REALTIME, &now);				   \
+    __clock_gettime64 (CLOCK_REALTIME, &now);				   \
     usecs = (uint64_t)now.tv_nsec / 1000 + (uint64_t)now.tv_sec * 1000000; \
     low = usecs & 0xffffffff;						   \
     high = usecs >> 32;							   \
diff --git a/sysdeps/unix/sysv/linux/alpha/osf_gettimeofday.c b/sysdeps/unix/sysv/linux/alpha/osf_gettimeofday.c
index 8cf5d303f9..5075ae0444 100644
--- a/sysdeps/unix/sysv/linux/alpha/osf_gettimeofday.c
+++ b/sysdeps/unix/sysv/linux/alpha/osf_gettimeofday.c
@@ -35,8 +35,8 @@ __gettimeofday_tv32 (struct __timeval32 *restrict tv32, void *restrict tz)
   if (__glibc_unlikely (tz != 0))
     memset (tz, 0, sizeof (struct timezone));
 
-  struct timespec ts;
-  __clock_gettime (CLOCK_REALTIME, &ts);
+  struct __timespec64 ts;
+  __clock_gettime64 (CLOCK_REALTIME, &ts);
 
   *tv32 = valid_timespec_to_timeval32 (ts);
   return 0;
diff --git a/sysdeps/unix/sysv/linux/clock.c b/sysdeps/unix/sysv/linux/clock.c
index 24a8df0cf5..157ae8eb3f 100644
--- a/sysdeps/unix/sysv/linux/clock.c
+++ b/sysdeps/unix/sysv/linux/clock.c
@@ -23,15 +23,12 @@
 clock_t
 clock (void)
 {
-  struct timespec ts;
+  struct __timespec64 ts;
 
   _Static_assert (CLOCKS_PER_SEC == 1000000,
 		  "CLOCKS_PER_SEC should be 1000000");
 
-  /* clock_gettime shouldn't fail here since CLOCK_PROCESS_CPUTIME_ID is
-     supported since 2.6.12.  Check the return value anyway in case the kernel
-     barfs on us for some reason.  */
-  if (__glibc_unlikely (__clock_gettime (CLOCK_PROCESS_CPUTIME_ID, &ts) != 0))
+  if (__glibc_unlikely (__clock_gettime64 (CLOCK_PROCESS_CPUTIME_ID, &ts) != 0))
     return (clock_t) -1;
 
   return (ts.tv_sec * CLOCKS_PER_SEC
-- 
2.20.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 5/5] y2038: Replace __clock_gettime with __clock_gettime64
  2020-03-24 13:18 ` [PATCH 5/5] y2038: Replace __clock_gettime with __clock_gettime64 Lukasz Majewski
@ 2020-03-24 14:26   ` Andreas Schwab
  2020-03-24 14:35     ` Lukasz Majewski
  0 siblings, 1 reply; 14+ messages in thread
From: Andreas Schwab @ 2020-03-24 14:26 UTC (permalink / raw)
  To: Lukasz Majewski
  Cc: Joseph Myers, Adhemerval Zanella, GNU C Library, Alistair Francis

On Mär 24 2020, Lukasz Majewski wrote:

> diff --git a/login/logout.c b/login/logout.c
> index 7653fe8886..a421d07301 100644
> --- a/login/logout.c
> +++ b/login/logout.c
> @@ -47,9 +47,13 @@ logout (const char *line)
>        memset (ut->ut_name, '\0', sizeof ut->ut_name);
>        memset (ut->ut_host, '\0', sizeof ut->ut_host);
>  
> -      struct timespec ts;
> -      __clock_gettime (CLOCK_REALTIME, &ts);
> +      struct __timespec64 ts;
> +      __clock_gettime64 (CLOCK_REALTIME, &ts);
> +#if __WORDSIZE_TIME64_COMPAT32 || defined __s390x__ || defined __s390__
>        TIMESPEC_TO_TIMEVAL (&ut->ut_tv, &ts);
> +#else
> +      ut->ut_tv = valid_timespec64_to_timeval (ts);
> +#endif

Doesn't TIMESPEC_TO_TIMEVAL work generically?

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."

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 5/5] y2038: Replace __clock_gettime with __clock_gettime64
  2020-03-24 14:26   ` Andreas Schwab
@ 2020-03-24 14:35     ` Lukasz Majewski
  0 siblings, 0 replies; 14+ messages in thread
From: Lukasz Majewski @ 2020-03-24 14:35 UTC (permalink / raw)
  To: Andreas Schwab
  Cc: Joseph Myers, Adhemerval Zanella, GNU C Library, Alistair Francis

[-- Attachment #1: Type: text/plain, Size: 1224 bytes --]

Hi Andreas,

> On Mär 24 2020, Lukasz Majewski wrote:
> 
> > diff --git a/login/logout.c b/login/logout.c
> > index 7653fe8886..a421d07301 100644
> > --- a/login/logout.c
> > +++ b/login/logout.c
> > @@ -47,9 +47,13 @@ logout (const char *line)
> >        memset (ut->ut_name, '\0', sizeof ut->ut_name);
> >        memset (ut->ut_host, '\0', sizeof ut->ut_host);
> >  
> > -      struct timespec ts;
> > -      __clock_gettime (CLOCK_REALTIME, &ts);
> > +      struct __timespec64 ts;
> > +      __clock_gettime64 (CLOCK_REALTIME, &ts);
> > +#if __WORDSIZE_TIME64_COMPAT32 || defined __s390x__ || defined
> > __s390__ TIMESPEC_TO_TIMEVAL (&ut->ut_tv, &ts);
> > +#else
> > +      ut->ut_tv = valid_timespec64_to_timeval (ts);
> > +#endif  
> 
> Doesn't TIMESPEC_TO_TIMEVAL work generically?

Good point. In this case there shouldn't be any need to add static
inlined (with type checking) conversion functions.

> 
> 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

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/5] y2038: inet: Convert inet deadline to support 64 bit time
  2020-03-24 13:18 ` [PATCH 3/5] y2038: inet: Convert inet deadline to support 64 bit time Lukasz Majewski
@ 2020-03-24 14:37   ` Adhemerval Zanella
  2020-03-24 17:52     ` Lukasz Majewski
  0 siblings, 1 reply; 14+ messages in thread
From: Adhemerval Zanella @ 2020-03-24 14:37 UTC (permalink / raw)
  To: Lukasz Majewski, Joseph Myers
  Cc: Alistair Francis, Alistair Francis, GNU C Library,
	Florian Weimer, Andreas Schwab



On 24/03/2020 10:18, Lukasz Majewski wrote:
> This change brings 64 bit time support to inet deadline related code for
> architectures with __WORDSIZE == 32 && __TIMESIZE != 64.
> 
> It is also safe to replace struct timespec with struct __timespec64 in
> deadline related structures as:
> 
> - The __deadline_to_ms () returns the number of miliseconds to deadline to
>   be used with __poll (and hence it is a relative value).
> - To calculate the deadline from timeval (which will be converted latter)
>   the uintmax_t type is used (unsinged long long int).
> ---
>  inet/deadline.c     | 4 ++--
>  inet/net-internal.h | 5 +++--
>  2 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/inet/deadline.c b/inet/deadline.c
> index ebf9a4f52c..eac7afd1a8 100644
> --- a/inet/deadline.c
> +++ b/inet/deadline.c
> @@ -28,8 +28,8 @@ struct deadline_current_time
>  __deadline_current_time (void)
>  {
>    struct deadline_current_time result;
> -  if (__clock_gettime (CLOCK_MONOTONIC, &result.current) != 0)
> -    __clock_gettime (CLOCK_REALTIME, &result.current);
> +  if (__clock_gettime64 (CLOCK_MONOTONIC, &result.current) != 0)
> +    __clock_gettime64 (CLOCK_REALTIME, &result.current);
>    assert (result.current.tv_sec >= 0);
>    return result;
>  }
> diff --git a/inet/net-internal.h b/inet/net-internal.h
> index 3ca301a9be..50c7e1c482 100644
> --- a/inet/net-internal.h
> +++ b/inet/net-internal.h
> @@ -24,6 +24,7 @@
>  #include <stdint.h>
>  #include <sys/time.h>
>  #include <libc-diag.h>
> +#include <struct___timespec64.h>

Why time.h is not providing the __timespec64 in this case?

>  
>  int __inet6_scopeid_pton (const struct in6_addr *address,
>                            const char *scope, uint32_t *result);
> @@ -76,7 +77,7 @@ enum idna_name_classification __idna_name_classify (const char *name)
>     timeouts and vice versa.  */
>  struct deadline_current_time
>  {
> -  struct timespec current;
> +  struct __timespec64 current;
>  };
>  
>  /* Return the current time.  Terminates the process if the current
> @@ -86,7 +87,7 @@ struct deadline_current_time __deadline_current_time (void) attribute_hidden;
>  /* Computed absolute deadline.  */
>  struct deadline
>  {
> -  struct timespec absolute;
> +  struct __timespec64 absolute;
>  };
>  
>  
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 2/5] y2038: hurd: Provide __clock_gettime64 function
  2020-03-24 13:18 ` [PATCH 2/5] y2038: hurd: Provide __clock_gettime64 function Lukasz Majewski
@ 2020-03-24 15:52   ` Alistair Francis
  0 siblings, 0 replies; 14+ messages in thread
From: Alistair Francis @ 2020-03-24 15:52 UTC (permalink / raw)
  To: Lukasz Majewski
  Cc: Joseph Myers, Adhemerval Zanella, Alistair Francis,
	GNU C Library, Florian Weimer, Andreas Schwab, Samuel Thibault

On Tue, Mar 24, 2020 at 6:18 AM Lukasz Majewski <lukma@denx.de> wrote:
>
> For Linux glibc ports the __TIMESIZE == 64 ensures proper aliasing for
> __clock_gettime64 (to __clock_gettime).
> When __TIMESIZE != 64 (like ARM32, PPC) the glibc expects separate definition
> of the __clock_gettime64.
>
> The HURD port only provides __clock_gettime, so this patch adds
> __clock_gettime64 as a tiny wrapper on it.
> Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
>  sysdeps/mach/clock_gettime.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
>
> diff --git a/sysdeps/mach/clock_gettime.c b/sysdeps/mach/clock_gettime.c
> index ac3547df3c..fbd80536d5 100644
> --- a/sysdeps/mach/clock_gettime.c
> +++ b/sysdeps/mach/clock_gettime.c
> @@ -49,3 +49,17 @@ versioned_symbol (libc, __clock_gettime, clock_gettime, GLIBC_2_17);
>  strong_alias (__clock_gettime, __clock_gettime_2);
>  compat_symbol (libc, __clock_gettime_2, clock_gettime, GLIBC_2_2);
>  #endif
> +
> +int
> +__clock_gettime64 (clockid_t clock_id, struct __timespec64 *ts64)
> +{
> +  struct timespec ts;
> +  int ret;
> +
> +  ret = __clock_gettime (clock_id, &ts);
> +  if (ret == 0)
> +    *ts64 = valid_timespec_to_timespec64 (ts);
> +
> +  return ret;
> +}
> +libc_hidden_def (__clock_gettime64)
> --
> 2.20.1
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 4/5] y2038: nscd: Modify nscd_helper to use __clock_gettime64
  2020-03-24 13:18 ` [PATCH 4/5] y2038: nscd: Modify nscd_helper to use __clock_gettime64 Lukasz Majewski
@ 2020-03-24 15:54   ` Alistair Francis
  0 siblings, 0 replies; 14+ messages in thread
From: Alistair Francis @ 2020-03-24 15:54 UTC (permalink / raw)
  To: Lukasz Majewski
  Cc: Joseph Myers, Adhemerval Zanella, Alistair Francis,
	GNU C Library, Florian Weimer, Andreas Schwab

On Tue, Mar 24, 2020 at 6:18 AM Lukasz Majewski <lukma@denx.de> wrote:
>
> The nscd/nscd_helper.c uses __clock_gettime to get current time and on this
> basis calculate the relative timeout for poll.
> By using __clock_gettime64 on systems with __WORDSIZE == 32 && __TIMESIZE != 64
> the timeout is correctly calculated after time_t overflow.

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
>  nscd/nscd_helper.c | 17 +++++++++--------
>  1 file changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/nscd/nscd_helper.c b/nscd/nscd_helper.c
> index d2d7d15f26..a4f3312f90 100644
> --- a/nscd/nscd_helper.c
> +++ b/nscd/nscd_helper.c
> @@ -37,6 +37,7 @@
>  #include <not-cancel.h>
>  #include <kernel-features.h>
>  #include <nss.h>
> +#include <struct___timespec64.h>
>
>  #include "nscd-client.h"
>
> @@ -59,10 +60,10 @@ wait_on_socket (int sock, long int usectmo)
>        /* Handle the case where the poll() call is interrupted by a
>          signal.  We cannot just use TEMP_FAILURE_RETRY since it might
>          lead to infinite loops.  */
> -      struct timespec now;
> -      __clock_gettime (CLOCK_REALTIME, &now);
> -      long int end = (now.tv_sec * 1000 + usectmo
> -                      + (now.tv_nsec + 500000) / 1000000);
> +      struct __timespec64 now;
> +      __clock_gettime64 (CLOCK_REALTIME, &now);
> +      int64_t end = (now.tv_sec * 1000 + usectmo
> +                     + (now.tv_nsec + 500000) / 1000000);
>        long int timeout = usectmo;
>        while (1)
>         {
> @@ -71,7 +72,7 @@ wait_on_socket (int sock, long int usectmo)
>             break;
>
>           /* Recompute the timeout time.  */
> -          __clock_gettime (CLOCK_REALTIME, &now);
> +          __clock_gettime64 (CLOCK_REALTIME, &now);
>           timeout = end - ((now.tv_sec * 1000
>                              + (now.tv_nsec + 500000) / 1000000));
>         }
> @@ -193,7 +194,7 @@ open_socket (request_type type, const char *key, size_t keylen)
>    memcpy (reqdata->key, key, keylen);
>
>    bool first_try = true;
> -  struct timespec tvend = { 0, 0 };
> +  struct __timespec64 tvend = { 0, 0 };
>    while (1)
>      {
>  #ifndef MSG_NOSIGNAL
> @@ -212,8 +213,8 @@ open_socket (request_type type, const char *key, size_t keylen)
>
>        /* The daemon is busy wait for it.  */
>        int to;
> -      struct timespec now;
> -      __clock_gettime (CLOCK_REALTIME, &now);
> +      struct __timespec64 now;
> +      __clock_gettime64 (CLOCK_REALTIME, &now);
>        if (first_try)
>         {
>           tvend.tv_nsec = now.tv_nsec;
> --
> 2.20.1
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/5] y2038: inet: Convert inet deadline to support 64 bit time
  2020-03-24 14:37   ` Adhemerval Zanella
@ 2020-03-24 17:52     ` Lukasz Majewski
  2020-03-24 17:56       ` Adhemerval Zanella
  0 siblings, 1 reply; 14+ messages in thread
From: Lukasz Majewski @ 2020-03-24 17:52 UTC (permalink / raw)
  To: Adhemerval Zanella
  Cc: Joseph Myers, Alistair Francis, Alistair Francis, GNU C Library,
	Florian Weimer, Andreas Schwab

[-- Attachment #1: Type: text/plain, Size: 3169 bytes --]

Hi Adhemerval,

> On 24/03/2020 10:18, Lukasz Majewski wrote:
> > This change brings 64 bit time support to inet deadline related
> > code for architectures with __WORDSIZE == 32 && __TIMESIZE != 64.
> > 
> > It is also safe to replace struct timespec with struct __timespec64
> > in deadline related structures as:
> > 
> > - The __deadline_to_ms () returns the number of miliseconds to
> > deadline to be used with __poll (and hence it is a relative value).
> > - To calculate the deadline from timeval (which will be converted
> > latter) the uintmax_t type is used (unsinged long long int).
> > ---
> >  inet/deadline.c     | 4 ++--
> >  inet/net-internal.h | 5 +++--
> >  2 files changed, 5 insertions(+), 4 deletions(-)
> > 
> > diff --git a/inet/deadline.c b/inet/deadline.c
> > index ebf9a4f52c..eac7afd1a8 100644
> > --- a/inet/deadline.c
> > +++ b/inet/deadline.c
> > @@ -28,8 +28,8 @@ struct deadline_current_time
> >  __deadline_current_time (void)
> >  {
> >    struct deadline_current_time result;
> > -  if (__clock_gettime (CLOCK_MONOTONIC, &result.current) != 0)
> > -    __clock_gettime (CLOCK_REALTIME, &result.current);
> > +  if (__clock_gettime64 (CLOCK_MONOTONIC, &result.current) != 0)
> > +    __clock_gettime64 (CLOCK_REALTIME, &result.current);
> >    assert (result.current.tv_sec >= 0);
> >    return result;
> >  }
> > diff --git a/inet/net-internal.h b/inet/net-internal.h
> > index 3ca301a9be..50c7e1c482 100644
> > --- a/inet/net-internal.h
> > +++ b/inet/net-internal.h
> > @@ -24,6 +24,7 @@
> >  #include <stdint.h>
> >  #include <sys/time.h>
> >  #include <libc-diag.h>
> > +#include <struct___timespec64.h>  
> 
> Why time.h is not providing the __timespec64 in this case?

There is quite long queue for Y2038 patches - as in [1].

The struct __timespec64 has gained its own include file - namely
./include/struct___timespec.h [2] - when I do prepared conversion of
mq_timed{send|receive}


Links:

[1] - https://github.com/lmajewski/y2038_glibc/commits/y2038_edge
[2] -
https://github.com/lmajewski/y2038_glibc/commit/6c7250ef4bf7ea87479489a825f05bb0de8d7684

> 
> >  
> >  int __inet6_scopeid_pton (const struct in6_addr *address,
> >                            const char *scope, uint32_t *result);
> > @@ -76,7 +77,7 @@ enum idna_name_classification
> > __idna_name_classify (const char *name) timeouts and vice versa.  */
> >  struct deadline_current_time
> >  {
> > -  struct timespec current;
> > +  struct __timespec64 current;
> >  };
> >  
> >  /* Return the current time.  Terminates the process if the current
> > @@ -86,7 +87,7 @@ struct deadline_current_time
> > __deadline_current_time (void) attribute_hidden; /* Computed
> > absolute deadline.  */ struct deadline
> >  {
> > -  struct timespec absolute;
> > +  struct __timespec64 absolute;
> >  };
> >  
> >  
> >   




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 #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/5] y2038: inet: Convert inet deadline to support 64 bit time
  2020-03-24 17:52     ` Lukasz Majewski
@ 2020-03-24 17:56       ` Adhemerval Zanella
  2020-03-24 22:54         ` Lukasz Majewski
  0 siblings, 1 reply; 14+ messages in thread
From: Adhemerval Zanella @ 2020-03-24 17:56 UTC (permalink / raw)
  To: Lukasz Majewski
  Cc: Joseph Myers, Alistair Francis, Alistair Francis, GNU C Library,
	Florian Weimer, Andreas Schwab


[-- Attachment #1.1: Type: text/plain, Size: 2460 bytes --]



On 24/03/2020 14:52, Lukasz Majewski wrote:
> Hi Adhemerval,
> 
>> On 24/03/2020 10:18, Lukasz Majewski wrote:
>>> This change brings 64 bit time support to inet deadline related
>>> code for architectures with __WORDSIZE == 32 && __TIMESIZE != 64.
>>>
>>> It is also safe to replace struct timespec with struct __timespec64
>>> in deadline related structures as:
>>>
>>> - The __deadline_to_ms () returns the number of miliseconds to
>>> deadline to be used with __poll (and hence it is a relative value).
>>> - To calculate the deadline from timeval (which will be converted
>>> latter) the uintmax_t type is used (unsinged long long int).
>>> ---
>>>  inet/deadline.c     | 4 ++--
>>>  inet/net-internal.h | 5 +++--
>>>  2 files changed, 5 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/inet/deadline.c b/inet/deadline.c
>>> index ebf9a4f52c..eac7afd1a8 100644
>>> --- a/inet/deadline.c
>>> +++ b/inet/deadline.c
>>> @@ -28,8 +28,8 @@ struct deadline_current_time
>>>  __deadline_current_time (void)
>>>  {
>>>    struct deadline_current_time result;
>>> -  if (__clock_gettime (CLOCK_MONOTONIC, &result.current) != 0)
>>> -    __clock_gettime (CLOCK_REALTIME, &result.current);
>>> +  if (__clock_gettime64 (CLOCK_MONOTONIC, &result.current) != 0)
>>> +    __clock_gettime64 (CLOCK_REALTIME, &result.current);
>>>    assert (result.current.tv_sec >= 0);
>>>    return result;
>>>  }
>>> diff --git a/inet/net-internal.h b/inet/net-internal.h
>>> index 3ca301a9be..50c7e1c482 100644
>>> --- a/inet/net-internal.h
>>> +++ b/inet/net-internal.h
>>> @@ -24,6 +24,7 @@
>>>  #include <stdint.h>
>>>  #include <sys/time.h>
>>>  #include <libc-diag.h>
>>> +#include <struct___timespec64.h>  
>>
>> Why time.h is not providing the __timespec64 in this case?
> 
> There is quite long queue for Y2038 patches - as in [1].
> 
> The struct __timespec64 has gained its own include file - namely
> ./include/struct___timespec.h [2] - when I do prepared conversion of
> mq_timed{send|receive}
> 
> 
> Links:
> 
> [1] - https://github.com/lmajewski/y2038_glibc/commits/y2038_edge
> [2] -
> https://github.com/lmajewski/y2038_glibc/commit/6c7250ef4bf7ea87479489a825f05bb0de8d7684

Yes, I am aware. I still think that include <time.h> would be better
here. The struct*.h installed files are meant to be used on installed
headers to avoid naming pollution, I don't see a good way to used them
directly.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/5] y2038: inet: Convert inet deadline to support 64 bit time
  2020-03-24 17:56       ` Adhemerval Zanella
@ 2020-03-24 22:54         ` Lukasz Majewski
  0 siblings, 0 replies; 14+ messages in thread
From: Lukasz Majewski @ 2020-03-24 22:54 UTC (permalink / raw)
  To: Adhemerval Zanella
  Cc: Joseph Myers, Alistair Francis, Alistair Francis, GNU C Library,
	Florian Weimer, Andreas Schwab

[-- Attachment #1: Type: text/plain, Size: 3260 bytes --]

Hi Adhemerval,

> On 24/03/2020 14:52, Lukasz Majewski wrote:
> > Hi Adhemerval,
> >   
> >> On 24/03/2020 10:18, Lukasz Majewski wrote:  
> >>> This change brings 64 bit time support to inet deadline related
> >>> code for architectures with __WORDSIZE == 32 && __TIMESIZE != 64.
> >>>
> >>> It is also safe to replace struct timespec with struct
> >>> __timespec64 in deadline related structures as:
> >>>
> >>> - The __deadline_to_ms () returns the number of miliseconds to
> >>> deadline to be used with __poll (and hence it is a relative
> >>> value).
> >>> - To calculate the deadline from timeval (which will be converted
> >>> latter) the uintmax_t type is used (unsinged long long int).
> >>> ---
> >>>  inet/deadline.c     | 4 ++--
> >>>  inet/net-internal.h | 5 +++--
> >>>  2 files changed, 5 insertions(+), 4 deletions(-)
> >>>
> >>> diff --git a/inet/deadline.c b/inet/deadline.c
> >>> index ebf9a4f52c..eac7afd1a8 100644
> >>> --- a/inet/deadline.c
> >>> +++ b/inet/deadline.c
> >>> @@ -28,8 +28,8 @@ struct deadline_current_time
> >>>  __deadline_current_time (void)
> >>>  {
> >>>    struct deadline_current_time result;
> >>> -  if (__clock_gettime (CLOCK_MONOTONIC, &result.current) != 0)
> >>> -    __clock_gettime (CLOCK_REALTIME, &result.current);
> >>> +  if (__clock_gettime64 (CLOCK_MONOTONIC, &result.current) != 0)
> >>> +    __clock_gettime64 (CLOCK_REALTIME, &result.current);
> >>>    assert (result.current.tv_sec >= 0);
> >>>    return result;
> >>>  }
> >>> diff --git a/inet/net-internal.h b/inet/net-internal.h
> >>> index 3ca301a9be..50c7e1c482 100644
> >>> --- a/inet/net-internal.h
> >>> +++ b/inet/net-internal.h
> >>> @@ -24,6 +24,7 @@
> >>>  #include <stdint.h>
> >>>  #include <sys/time.h>
> >>>  #include <libc-diag.h>
> >>> +#include <struct___timespec64.h>    
> >>
> >> Why time.h is not providing the __timespec64 in this case?  
> > 
> > There is quite long queue for Y2038 patches - as in [1].
> > 
> > The struct __timespec64 has gained its own include file - namely
> > ./include/struct___timespec.h [2] - when I do prepared conversion of
> > mq_timed{send|receive}
> > 
> > 
> > Links:
> > 
> > [1] - https://github.com/lmajewski/y2038_glibc/commits/y2038_edge
> > [2] -
> > https://github.com/lmajewski/y2038_glibc/commit/6c7250ef4bf7ea87479489a825f05bb0de8d7684
> >  
> 
> Yes, I am aware. I still think that include <time.h> would be better
> here. 

Andreas has opposed for polluting more and more internal glibc headers
with #include <time.h> to only get struct __timespec64 available
(include/mqueue.h is a good example here).

Also Joseph has suggested to add struct __timespec64 to
./include/struct___timespec64.h

> The struct*.h installed files are meant to be used on installed
> headers to avoid naming pollution, I don't see a good way to used them
> directly.

Please be aware that this is an internal glibc definition - this is not
exported.

> 




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 #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2020-03-24 22:54 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-24 13:18 [PATCH 0/5] y2038: Replace __clock_gettime with __clock_gettime64 Lukasz Majewski
2020-03-24 13:18 ` [PATCH 1/5] y2038: Export __clock_gettime64 to be usable in other libraries Lukasz Majewski
2020-03-24 13:18 ` [PATCH 2/5] y2038: hurd: Provide __clock_gettime64 function Lukasz Majewski
2020-03-24 15:52   ` Alistair Francis
2020-03-24 13:18 ` [PATCH 3/5] y2038: inet: Convert inet deadline to support 64 bit time Lukasz Majewski
2020-03-24 14:37   ` Adhemerval Zanella
2020-03-24 17:52     ` Lukasz Majewski
2020-03-24 17:56       ` Adhemerval Zanella
2020-03-24 22:54         ` Lukasz Majewski
2020-03-24 13:18 ` [PATCH 4/5] y2038: nscd: Modify nscd_helper to use __clock_gettime64 Lukasz Majewski
2020-03-24 15:54   ` Alistair Francis
2020-03-24 13:18 ` [PATCH 5/5] y2038: Replace __clock_gettime with __clock_gettime64 Lukasz Majewski
2020-03-24 14:26   ` Andreas Schwab
2020-03-24 14:35     ` Lukasz Majewski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).