[v2,3/5] y2038: inet: Convert inet deadline to support 64 bit time
Commit Message
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(-)
Comments
On 26/03/2020 05:06, 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:
LGTM, thanks.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
>
> - 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;
> }
Ok.
> 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;
> };
>
Ok.
> /* 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;
> };
>
>
>
Ok.
@@ -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;
}
@@ -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;
};