|
@@ -125,6 +125,32 @@ static inline bool timeval_valid(const struct timeval *tv)
|
|
|
|
|
|
extern struct timespec timespec_trunc(struct timespec t, unsigned gran);
|
|
|
|
|
|
+/*
|
|
|
+ * Validates if a timespec/timeval used to inject a time offset is valid.
|
|
|
+ * Offsets can be postive or negative. The value of the timeval/timespec
|
|
|
+ * is the sum of its fields, but *NOTE*: the field tv_usec/tv_nsec must
|
|
|
+ * always be non-negative.
|
|
|
+ */
|
|
|
+static inline bool timeval_inject_offset_valid(const struct timeval *tv)
|
|
|
+{
|
|
|
+ /* We don't check the tv_sec as it can be positive or negative */
|
|
|
+
|
|
|
+ /* Can't have more microseconds then a second */
|
|
|
+ if (tv->tv_usec < 0 || tv->tv_usec >= USEC_PER_SEC)
|
|
|
+ return false;
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+static inline bool timespec_inject_offset_valid(const struct timespec *ts)
|
|
|
+{
|
|
|
+ /* We don't check the tv_sec as it can be positive or negative */
|
|
|
+
|
|
|
+ /* Can't have more nanoseconds then a second */
|
|
|
+ if (ts->tv_nsec < 0 || ts->tv_nsec >= NSEC_PER_SEC)
|
|
|
+ return false;
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
#define CURRENT_TIME (current_kernel_time())
|
|
|
#define CURRENT_TIME_SEC ((struct timespec) { get_seconds(), 0 })
|
|
|
|