Skip to content

Commit

Permalink
timeval: Add functions with microsecond granularity.
Browse files Browse the repository at this point in the history
Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
  • Loading branch information
igsilya authored and blp committed Oct 27, 2017
1 parent 6f39e18 commit bf168c4
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 0 deletions.
35 changes: 35 additions & 0 deletions lib/timeval.c
Expand Up @@ -231,6 +231,29 @@ time_wall_msec(void)
return time_msec__(&wall_clock);
}

static long long int
time_usec__(struct clock *c)
{
struct timespec ts;

time_timespec__(c, &ts);
return timespec_to_usec(&ts);
}

/* Returns a monotonic timer, in microseconds. */
long long int
time_usec(void)
{
return time_usec__(&monotonic_clock);
}

/* Returns the current time, in microseconds. */
long long int
time_wall_usec(void)
{
return time_usec__(&wall_clock);
}

/* Configures the program to die with SIGALRM 'secs' seconds from now, if
* 'secs' is nonzero, or disables the feature if 'secs' is zero. */
void
Expand Down Expand Up @@ -358,6 +381,18 @@ timeval_to_msec(const struct timeval *tv)
return (long long int) tv->tv_sec * 1000 + tv->tv_usec / 1000;
}

long long int
timespec_to_usec(const struct timespec *ts)
{
return (long long int) ts->tv_sec * 1000 * 1000 + ts->tv_nsec / 1000;
}

long long int
timeval_to_usec(const struct timeval *tv)
{
return (long long int) tv->tv_sec * 1000 * 1000 + tv->tv_usec;
}

/* Returns the monotonic time at which the "time" module was initialized, in
* milliseconds. */
long long int
Expand Down
4 changes: 4 additions & 0 deletions lib/timeval.h
Expand Up @@ -54,14 +54,18 @@ time_t time_now(void);
time_t time_wall(void);
long long int time_msec(void);
long long int time_wall_msec(void);
long long int time_usec(void);
long long int time_wall_usec(void);
void time_timespec(struct timespec *);
void time_wall_timespec(struct timespec *);
void time_alarm(unsigned int secs);
int time_poll(struct pollfd *, int n_pollfds, HANDLE *handles,
long long int timeout_when, int *elapsed);

long long int timespec_to_msec(const struct timespec *);
long long int timespec_to_usec(const struct timespec *);
long long int timeval_to_msec(const struct timeval *);
long long int timeval_to_usec(const struct timeval *);

struct tm_msec *localtime_msec(long long int now, struct tm_msec *result);
struct tm_msec *gmtime_msec(long long int now, struct tm_msec *result);
Expand Down

0 comments on commit bf168c4

Please sign in to comment.