Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1184292

[PATCH 1/6] time: Introduce struct itimerspec64

From Baolin Wang <baolin.wang@linaro.org>
Newsgroups linux.kernel
Subject [PATCH 1/6] time: Introduce struct itimerspec64
Date 2015-07-15 08:00 +0200
Message-ID <pMnTA-6TS-7@gated-at.bofh.it> (permalink)
References <pMnJV-6IC-5@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


The struct itimerspec is not year 2038 safe on 32bit systems due to
the limitation of the struct timespec members. Introduce itimerspec64
which uses struct timespec64 instead and provide conversion functions.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
---
 include/linux/time64.h |   35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/include/linux/time64.h b/include/linux/time64.h
index 77b5df2..367d5af 100644
--- a/include/linux/time64.h
+++ b/include/linux/time64.h
@@ -12,11 +12,18 @@ typedef __s64 time64_t;
  */
 #if __BITS_PER_LONG == 64
 # define timespec64 timespec
+#define itimerspec64 itimerspec
 #else
 struct timespec64 {
 	time64_t	tv_sec;			/* seconds */
 	long		tv_nsec;		/* nanoseconds */
 };
+
+struct itimerspec64 {
+	struct timespec64 it_interval;
+	struct timespec64 it_value;
+};
+
 #endif
 
 /* Parameters used to convert the timespec values: */
@@ -45,6 +52,16 @@ static inline struct timespec64 timespec_to_timespec64(const struct timespec ts)
 	return ts;
 }
 
+static inline struct itimerspec itimerspec64_to_itimerspec(struct itimerspec64 *its64)
+{
+	return *its64;
+}
+
+static inline struct itimerspec64 itimerspec_to_itimerspec64(struct itimerspec *its)
+{
+	return *its;
+}
+
 # define timespec64_equal		timespec_equal
 # define timespec64_compare		timespec_compare
 # define set_normalized_timespec64	set_normalized_timespec
@@ -77,6 +94,24 @@ static inline struct timespec64 timespec_to_timespec64(const struct timespec ts)
 	return ret;
 }
 
+static inline struct itimerspec itimerspec64_to_itimerspec(struct itimerspec64 *its64)
+{
+	struct itimerspec ret;
+
+	ret.it_interval = timespec64_to_timespec(its64->it_interval);
+	ret.it_value = timespec64_to_timespec(its64->it_value);
+	return ret;
+}
+
+static inline struct itimerspec64 itimerspec_to_itimerspec64(struct itimerspec *its)
+{
+	struct itimerspec64 ret;
+
+	ret.it_interval = timespec_to_timespec64(its->it_interval);
+	ret.it_value = timespec_to_timespec64(its->it_value);
+	return ret;
+}
+
 static inline int timespec64_equal(const struct timespec64 *a,
 				   const struct timespec64 *b)
 {
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 0/6] Introduce 64bit accessors and structures required to address y2038 issues in the posix_clock subsystem Baolin Wang <baolin.wang@linaro.org> - 2015-07-15 07:50 +0200
  [PATCH 2/6] timekeeping: Introduce current_kernel_time64() Baolin Wang <baolin.wang@linaro.org> - 2015-07-15 08:00 +0200
  [PATCH 3/6] security: Introduce security_settime64() Baolin Wang <baolin.wang@linaro.org> - 2015-07-15 08:00 +0200
    Re: [PATCH 3/6] security: Introduce security_settime64() Thomas Gleixner <tglx@linutronix.de> - 2015-07-15 12:30 +0200
      Re: [PATCH 3/6] security: Introduce security_settime64() Baolin Wang <baolin.wang@linaro.org> - 2015-07-15 13:40 +0200
  [PATCH 1/6] time: Introduce struct itimerspec64 Baolin Wang <baolin.wang@linaro.org> - 2015-07-15 08:00 +0200
  [PATCH 4/6] time: Introduce do_sys_settimeofday64() Baolin Wang <baolin.wang@linaro.org> - 2015-07-15 08:10 +0200
  [PATCH 6/6] cputime: Introduce cputime_to_timespec64()/timespec64_to_cputime() Baolin Wang <baolin.wang@linaro.org> - 2015-07-15 08:10 +0200
    Re: [PATCH 6/6] cputime: Introduce  cputime_to_timespec64()/timespec64_to_cputime() Thomas Gleixner <tglx@linutronix.de> - 2015-07-15 12:40 +0200
      Re: [PATCH 6/6] cputime: Introduce cputime_to_timespec64()/timespec64_to_cputime() Baolin Wang <baolin.wang@linaro.org> - 2015-07-15 13:50 +0200
        Re: [PATCH 6/6] cputime: Introduce  cputime_to_timespec64()/timespec64_to_cputime() Thomas Gleixner <tglx@linutronix.de> - 2015-07-15 14:00 +0200
          Re: [PATCH 6/6] cputime: Introduce cputime_to_timespec64()/timespec64_to_cputime() Baolin Wang <baolin.wang@linaro.org> - 2015-07-16 04:30 +0200
            Re: [PATCH 6/6] cputime: Introduce  cputime_to_timespec64()/timespec64_to_cputime() Thomas Gleixner <tglx@linutronix.de> - 2015-07-16 12:50 +0200
              Re: [PATCH 6/6] cputime: Introduce cputime_to_timespec64()/timespec64_to_cputime() Baolin Wang <baolin.wang@linaro.org> - 2015-07-17 10:40 +0200
  [PATCH 5/6] time: Introduce timespec64_to_jiffies()/jiffies_to_timespec64() Baolin Wang <baolin.wang@linaro.org> - 2015-07-15 08:10 +0200

csiph-web