diff mbox series

[ovs-dev,v5,5/7] timeval: Add functions with microsecond granularity.

Message ID 1509121187-24361-6-git-send-email-i.maximets@samsung.com
State Accepted
Headers show
Series Output packet batching. | expand

Commit Message

Ilya Maximets Oct. 27, 2017, 4:19 p.m. UTC
Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
---
 lib/timeval.c | 35 +++++++++++++++++++++++++++++++++++
 lib/timeval.h |  4 ++++
 2 files changed, 39 insertions(+)

Comments

Ben Pfaff Oct. 27, 2017, 5:52 p.m. UTC | #1
On Fri, Oct 27, 2017 at 07:19:45PM +0300, Ilya Maximets wrote:
> Signed-off-by: Ilya Maximets <i.maximets@samsung.com>

I applied this patch to master.  Thanks!

I don't plan to review the rest of the series myself, except upon
request.
diff mbox series

Patch

diff --git a/lib/timeval.c b/lib/timeval.c
index 2c7f43a..b50ff85 100644
--- a/lib/timeval.c
+++ b/lib/timeval.c
@@ -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
@@ -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
diff --git a/lib/timeval.h b/lib/timeval.h
index 7957dad..c3dbb51 100644
--- a/lib/timeval.h
+++ b/lib/timeval.h
@@ -54,6 +54,8 @@  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);
@@ -61,7 +63,9 @@  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);