Nanosecond/millisecond integer to RelativeTime conversion
This commit is contained in:
parent
125e2ad5d8
commit
bca67c9663
40
time.h
40
time.h
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#define NANOSECONDS_IN_SECOND 1000000000
|
#define NANOSECONDS_IN_SECOND 1000000000
|
||||||
|
#define MILLISECONDS_IN_SECOND 1000
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
struct timespec absolute;
|
struct timespec absolute;
|
||||||
|
@ -12,6 +13,29 @@ typedef struct {
|
||||||
struct timespec relative;
|
struct timespec relative;
|
||||||
} RelativeTime;
|
} RelativeTime;
|
||||||
|
|
||||||
|
__attribute__((unused)) inline static void
|
||||||
|
timespec_assign_nanosecond(struct timespec *target, long long ns)
|
||||||
|
{
|
||||||
|
time_t sec = ns / NANOSECONDS_IN_SECOND;
|
||||||
|
if (ns < 0) {
|
||||||
|
sec -= 1;
|
||||||
|
}
|
||||||
|
target->tv_sec = sec;
|
||||||
|
target->tv_nsec = ns - sec * NANOSECONDS_IN_SECOND;
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__((unused)) inline static void
|
||||||
|
timespec_assign_millisecond(struct timespec *target, long long ms)
|
||||||
|
{
|
||||||
|
time_t sec = ms / MILLISECONDS_IN_SECOND;
|
||||||
|
if (ms < 0) {
|
||||||
|
sec -= 1;
|
||||||
|
}
|
||||||
|
ms -= sec * MILLISECONDS_IN_SECOND;
|
||||||
|
target->tv_sec = sec;
|
||||||
|
target->tv_nsec = ms * (NANOSECONDS_IN_SECOND / MILLISECONDS_IN_SECOND);
|
||||||
|
}
|
||||||
|
|
||||||
__attribute__((unused)) inline static void
|
__attribute__((unused)) inline static void
|
||||||
timespec_add(struct timespec *accum, const struct timespec *item)
|
timespec_add(struct timespec *accum, const struct timespec *item)
|
||||||
{
|
{
|
||||||
|
@ -87,6 +111,22 @@ absolute_time_sub_absolute(AbsoluteTime lhs, AbsoluteTime rhs)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__attribute__((unused)) inline static RelativeTime
|
||||||
|
relative_time_from_nanosecond(long long ns)
|
||||||
|
{
|
||||||
|
RelativeTime result;
|
||||||
|
timespec_assign_nanosecond(&result.relative, ns);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__((unused)) inline static RelativeTime
|
||||||
|
relative_time_from_millisecond(long long ms)
|
||||||
|
{
|
||||||
|
RelativeTime result;
|
||||||
|
timespec_assign_millisecond(&result.relative, ms);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
__attribute__((unused)) inline static RelativeTime
|
__attribute__((unused)) inline static RelativeTime
|
||||||
relative_time_add(RelativeTime lhs, RelativeTime rhs)
|
relative_time_add(RelativeTime lhs, RelativeTime rhs)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue