Commit fe595287 authored by Rusty Russell's avatar Rusty Russell

time: to/from sec conversions.

Trivial, but they make coding easier and more predictable.
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 96a1ebd3
...@@ -6,7 +6,7 @@ int main(void) ...@@ -6,7 +6,7 @@ int main(void)
{ {
struct timespec t1, t2, t3, zero = { 0, 0 }; struct timespec t1, t2, t3, zero = { 0, 0 };
plan_tests(58); plan_tests(61);
/* Test time_now */ /* Test time_now */
t1 = time_now(); t1 = time_now();
...@@ -51,6 +51,12 @@ int main(void) ...@@ -51,6 +51,12 @@ int main(void)
t3 = time_sub(t2, t2); t3 = time_sub(t2, t2);
ok1(time_eq(t3, zero)); ok1(time_eq(t3, zero));
/* time_from_sec / time_to_sec */
t3 = time_from_sec(500);
ok1(t3.tv_sec == 500);
ok1(t3.tv_nsec == 0);
ok1(time_to_sec(t3) == 500);
/* time_from_msec / time_to_msec */ /* time_from_msec / time_to_msec */
t3 = time_from_msec(500); t3 = time_from_msec(500);
ok1(t3.tv_sec == 0); ok1(t3.tv_sec == 0);
......
...@@ -210,6 +210,24 @@ struct timespec time_divide(struct timespec t, unsigned long div); ...@@ -210,6 +210,24 @@ struct timespec time_divide(struct timespec t, unsigned long div);
*/ */
struct timespec time_multiply(struct timespec t, unsigned long mult); struct timespec time_multiply(struct timespec t, unsigned long mult);
/**
* time_to_sec - return number of seconds
* @t: a time
*
* It's often more convenient to deal with time values as seconds.
* Note that this will fit into an unsigned 32-bit variable if it's a
* time of less than about 136 years.
*
* Example:
* ...
* printf("Forking time is %u sec\n",
* (unsigned)time_to_sec(forking_time()));
*/
static inline uint64_t time_to_sec(struct timespec t)
{
return t.tv_sec;
}
/** /**
* time_to_msec - return number of milliseconds * time_to_msec - return number of milliseconds
* @t: a time * @t: a time
...@@ -275,6 +293,23 @@ static inline uint64_t time_to_nsec(struct timespec t) ...@@ -275,6 +293,23 @@ static inline uint64_t time_to_nsec(struct timespec t)
return nsec; return nsec;
} }
/**
* time_from_sec - convert seconds to a timespec
* @msec: time in seconds
*
* Example:
* // 1 minute timeout
* #define TIMEOUT time_from_sec(60)
*/
static inline struct timespec time_from_sec(uint64_t sec)
{
struct timespec t;
t.tv_nsec = 0;
t.tv_sec = sec;
return TIME_CHECK(t);
}
/** /**
* time_from_msec - convert milliseconds to a timespec * time_from_msec - convert milliseconds to a timespec
* @msec: time in milliseconds * @msec: time in milliseconds
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment