#endif
} ktime_t;
-#define KTIME_MAX ((s64)~((u64)1 << 63))
-#define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC)
+#define KTIME_MAX (~((u64)1 << 63))
/*
* ktime_t definitions when using the 64-bit scalar representation:
#if (BITS_PER_LONG == 64) || defined(CONFIG_KTIME_SCALAR)
+/* Define a ktime_t variable and initialize it to zero: */
+#define DEFINE_KTIME(kt) ktime_t kt = { .tv64 = 0 }
+
/**
* ktime_set - Set a ktime_t variable from a seconds/nanoseconds value
+ *
* @secs: seconds to set
* @nsecs: nanoseconds to set
*
*/
static inline ktime_t ktime_set(const long secs, const unsigned long nsecs)
{
-#if (BITS_PER_LONG == 64)
- if (unlikely(secs >= KTIME_SEC_MAX))
- return (ktime_t){ .tv64 = KTIME_MAX };
-#endif
return (ktime_t) { .tv64 = (s64)secs * NSEC_PER_SEC + (s64)nsecs };
}
/* Map the ktime_t to timeval conversion to ns_to_timeval function */
#define ktime_to_timeval(kt) ns_to_timeval((kt).tv64)
+/* Map the ktime_t to clock_t conversion to the inline in jiffies.h: */
+#define ktime_to_clock_t(kt) nsec_to_clock_t((kt).tv64)
+
/* Convert ktime_t to nanoseconds - NOP in the scalar storage format: */
#define ktime_to_ns(kt) ((kt).tv64)
* tv.sec < 0 and 0 >= tv.nsec < NSEC_PER_SEC
*/
+/* Define a ktime_t variable and initialize it to zero: */
+#define DEFINE_KTIME(kt) ktime_t kt = { .tv64 = 0 }
+
/* Set a ktime_t variable to a value in sec/nsec representation: */
static inline ktime_t ktime_set(const long secs, const unsigned long nsecs)
{
/**
* ktime_sub - subtract two ktime_t variables
+ *
* @lhs: minuend
* @rhs: subtrahend
*
/**
* ktime_add - add two ktime_t variables
+ *
* @add1: addend1
* @add2: addend2
*
/**
* ktime_add_ns - Add a scalar nanoseconds value to a ktime_t variable
+ *
* @kt: addend
* @nsec: the scalar nsec value to add
*
/**
* timespec_to_ktime - convert a timespec to ktime_t format
+ *
* @ts: the timespec variable to convert
*
* Returns a ktime_t variable with the converted timespec value
/**
* timeval_to_ktime - convert a timeval to ktime_t format
+ *
* @tv: the timeval variable to convert
*
* Returns a ktime_t variable with the converted timeval value
/**
* ktime_to_timespec - convert a ktime_t variable to timespec format
+ *
* @kt: the ktime_t variable to convert
*
* Returns the timespec representation of the ktime value
/**
* ktime_to_timeval - convert a ktime_t variable to timeval format
+ *
* @kt: the ktime_t variable to convert
*
* Returns the timeval representation of the ktime value
.tv_usec = (suseconds_t) (kt.tv.nsec / NSEC_PER_USEC) };
}
+/**
+ * ktime_to_clock_t - convert a ktime_t variable to clock_t format
+ * @kt: the ktime_t variable to convert
+ *
+ * Returns a clock_t variable with the converted value
+ */
+static inline clock_t ktime_to_clock_t(const ktime_t kt)
+{
+ return nsec_to_clock_t( (u64) kt.tv.sec * NSEC_PER_SEC + kt.tv.nsec);
+}
+
/**
* ktime_to_ns - convert a ktime_t variable to scalar nanoseconds
* @kt: the ktime_t variable to convert