Message ID | 1429509459-17068-2-git-send-email-baolin.wang@linaro.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Hello. On 4/20/2015 8:57 AM, Baolin Wang wrote: > This patch introduces the 'struct itimerspec64' for 64bit to replace itimerspec, > and also introduces the conversion methods: itimerspec64_to_itimerspec() and > itimerspec_to_itimerspec64(), that makes itimerspec to ready for 2038 year. "To" not needed here. > Signed-off-by: Baolin Wang <baolin.wang@linaro.org> [...] WBR, Sergei
On 20 April 2015 at 17:49, Sergei Shtylyov < sergei.shtylyov@cogentembedded.com> wrote: > Hello. > > On 4/20/2015 8:57 AM, Baolin Wang wrote: > > This patch introduces the 'struct itimerspec64' for 64bit to replace >> itimerspec, >> and also introduces the conversion methods: itimerspec64_to_itimerspec() >> and >> itimerspec_to_itimerspec64(), that makes itimerspec to ready for 2038 >> year. >> > > "To" not needed here. > > Signed-off-by: Baolin Wang <baolin.wang@linaro.org> >> > > [...] > > WBR, Sergei > > Hi Sergei, Sorry for the mistake. Thank you for your comments. I'll fix that in next patch.
On Mon, 20 Apr 2015, Baolin Wang wrote: > This patch introduces the 'struct itimerspec64' for 64bit to replace itimerspec, > and also introduces the conversion methods: itimerspec64_to_itimerspec() and > itimerspec_to_itimerspec64(), that makes itimerspec to ready for 2038 year. > > Signed-off-by: Baolin Wang <baolin.wang@linaro.org> > --- > include/linux/time64.h | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/include/linux/time64.h b/include/linux/time64.h > index a383147..3647bdd 100644 > --- a/include/linux/time64.h > +++ b/include/linux/time64.h > @@ -18,6 +18,11 @@ struct timespec64 { > }; > #endif > > +struct itimerspec64 { > + struct timespec64 it_interval; /* timer period */ > + struct timespec64 it_value; /* timer expiration */ > +}; > + > /* Parameters used to convert the timespec values: */ > #define MSEC_PER_SEC 1000L > #define USEC_PER_MSEC 1000L > @@ -187,4 +192,12 @@ static __always_inline void timespec64_add_ns(struct timespec64 *a, u64 ns) > > #endif > > +#define itimerspec64_to_itimerspec(its64) \ > +#define itimerspec_to_itimerspec64(its) \ 1.) Make these static inlines please. These macros are not typesafe. 2.) Use pointers to the input value. Thanks. tglx
On Mon, 20 Apr 2015, Thomas Gleixner wrote: > On Mon, 20 Apr 2015, Baolin Wang wrote: > > This patch introduces the 'struct itimerspec64' for 64bit to replace itimerspec, > > and also introduces the conversion methods: itimerspec64_to_itimerspec() and > > itimerspec_to_itimerspec64(), that makes itimerspec to ready for 2038 year. > > > > Signed-off-by: Baolin Wang <baolin.wang@linaro.org> > > --- > > include/linux/time64.h | 13 +++++++++++++ > > 1 file changed, 13 insertions(+) > > > > diff --git a/include/linux/time64.h b/include/linux/time64.h > > index a383147..3647bdd 100644 > > --- a/include/linux/time64.h > > +++ b/include/linux/time64.h > > @@ -18,6 +18,11 @@ struct timespec64 { > > }; > > #endif > > > > +struct itimerspec64 { > > + struct timespec64 it_interval; /* timer period */ > > + struct timespec64 it_value; /* timer expiration */ > > +}; Aside of the macro mess. This really wants to be conditional on 64/32 but in the same way as we have the different implementations for timespec64. Your patch enforces a useless conversion from and to itimerspec64 even on 64 bit because the compiler cannot map the types. Sigh. timespec64 is a proper guidance here. Thanks, tglx
On 21 April 2015 at 03:14, Thomas Gleixner <tglx@linutronix.de> wrote: > On Mon, 20 Apr 2015, Baolin Wang wrote: > > This patch introduces the 'struct itimerspec64' for 64bit to replace > itimerspec, > > and also introduces the conversion methods: itimerspec64_to_itimerspec() > and > > itimerspec_to_itimerspec64(), that makes itimerspec to ready for 2038 > year. > > > > Signed-off-by: Baolin Wang <baolin.wang@linaro.org> > > --- > > include/linux/time64.h | 13 +++++++++++++ > > 1 file changed, 13 insertions(+) > > > > diff --git a/include/linux/time64.h b/include/linux/time64.h > > index a383147..3647bdd 100644 > > --- a/include/linux/time64.h > > +++ b/include/linux/time64.h > > @@ -18,6 +18,11 @@ struct timespec64 { > > }; > > #endif > > > > +struct itimerspec64 { > > + struct timespec64 it_interval; /* timer period */ > > + struct timespec64 it_value; /* timer expiration */ > > +}; > > + > > /* Parameters used to convert the timespec values: */ > > #define MSEC_PER_SEC 1000L > > #define USEC_PER_MSEC 1000L > > @@ -187,4 +192,12 @@ static __always_inline void > timespec64_add_ns(struct timespec64 *a, u64 ns) > > > > #endif > > > > +#define itimerspec64_to_itimerspec(its64) \ > > > +#define itimerspec_to_itimerspec64(its) \ > > 1.) Make these static inlines please. These macros are not typesafe. > > 2.) Use pointers to the input value. > > Thanks. > > tglx > Thanks for your comments, i'll fix in next patch.
diff --git a/include/linux/time64.h b/include/linux/time64.h index a383147..3647bdd 100644 --- a/include/linux/time64.h +++ b/include/linux/time64.h @@ -18,6 +18,11 @@ struct timespec64 { }; #endif +struct itimerspec64 { + struct timespec64 it_interval; /* timer period */ + struct timespec64 it_value; /* timer expiration */ +}; + /* Parameters used to convert the timespec values: */ #define MSEC_PER_SEC 1000L #define USEC_PER_MSEC 1000L @@ -187,4 +192,12 @@ static __always_inline void timespec64_add_ns(struct timespec64 *a, u64 ns) #endif +#define itimerspec64_to_itimerspec(its64) \ + ({ (struct itimerspec){ .it_interval = timespec64_to_timespec((its64).it_interval), \ + .it_value = timespec64_to_timespec((its64).it_value) }; }) + +#define itimerspec_to_itimerspec64(its) \ + ({ (struct itimerspec64){ .it_interval = timespec_to_timespec64((its).it_interval), \ + .it_value = timespec_to_timespec64((its).it_value) }; }) + #endif /* _LINUX_TIME64_H */
This patch introduces the 'struct itimerspec64' for 64bit to replace itimerspec, and also introduces the conversion methods: itimerspec64_to_itimerspec() and itimerspec_to_itimerspec64(), that makes itimerspec to ready for 2038 year. Signed-off-by: Baolin Wang <baolin.wang@linaro.org> --- include/linux/time64.h | 13 +++++++++++++ 1 file changed, 13 insertions(+)