summaryrefslogtreecommitdiff
path: root/include/linux/time.h
diff options
context:
space:
mode:
authorJohn Stultz <johnstul@us.ibm.com>2010-07-14 04:56:19 +0400
committerThomas Gleixner <tglx@linutronix.de>2010-07-27 14:40:53 +0400
commitce3bf7ab22527183634a76512d9854a38615e4d5 (patch)
tree79e48c7c84618d968664bd660c75e03fc98e7d11 /include/linux/time.h
parent8c73626ab28527b7eb7f3061c027fbfe530c488c (diff)
downloadlinux-ce3bf7ab22527183634a76512d9854a38615e4d5.tar.xz
time: Implement timespec_add
After accidentally misusing timespec_add_safe, I wanted to make sure we don't accidently trip over that issue again, so I created a simple timespec_add() function which we can use to replace the instances of timespec_add_safe() that don't want the overflow detection. Signed-off-by: John Stultz <johnstul@us.ibm.com> LKML-Reference: <1279068988-21864-3-git-send-email-johnstul@us.ibm.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/linux/time.h')
-rw-r--r--include/linux/time.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/include/linux/time.h b/include/linux/time.h
index ea3559f0b3f2..9072df83de1f 100644
--- a/include/linux/time.h
+++ b/include/linux/time.h
@@ -76,9 +76,25 @@ extern unsigned long mktime(const unsigned int year, const unsigned int mon,
const unsigned int min, const unsigned int sec);
extern void set_normalized_timespec(struct timespec *ts, time_t sec, s64 nsec);
+
+/*
+ * timespec_add_safe assumes both values are positive and checks
+ * for overflow. It will return TIME_T_MAX if the reutrn would be
+ * smaller then either of the arguments.
+ */
extern struct timespec timespec_add_safe(const struct timespec lhs,
const struct timespec rhs);
+
+static inline struct timespec timespec_add(struct timespec lhs,
+ struct timespec rhs)
+{
+ struct timespec ts_delta;
+ set_normalized_timespec(&ts_delta, lhs.tv_sec + rhs.tv_sec,
+ lhs.tv_nsec + rhs.tv_nsec);
+ return ts_delta;
+}
+
/*
* sub = lhs - rhs, in normalized form
*/