[ovs-dev] [batch v2 1/5] ovs-benchmark: Compile for windows.

Ethan Jackson ethan at nicira.com
Mon Jun 30 20:11:22 UTC 2014


From: Gurucharan Shetty <gshetty at nicira.com>

This just makes ovs-benchmark compile on windows.
This lets us go ahead with just a 'make' instead of
picking and choosing executables that are tested to work on
windows as arguments for make.

This commit does not make ovs-benchmark a supported utility
on windows.

Signed-off-by: Gurucharan Shetty <gshetty at nicira.com>
Acked-by: Ben Pfaff <blp at nicira.com>
---
 BUILD.Windows             | 10 +++++-----
 utilities/ovs-benchmark.c | 30 ++++++++++++++++++------------
 2 files changed, 23 insertions(+), 17 deletions(-)

diff --git a/BUILD.Windows b/BUILD.Windows
index f8f13e9..2ff17ee 100644
--- a/BUILD.Windows
+++ b/BUILD.Windows
@@ -58,11 +58,11 @@ or from a distribution tar ball.
 
 * Run make for the ported executables in the top source directory, e.g.:
 
-  % make lib/vswitch-idl.h lib/vtep-idl.h ofproto/ipfix-entities.def
-  % make ovsdb/ovsdb-server.exe ovsdb/ovsdb-tool.exe ovsdb/ovsdb-client.exe \
-         utilities/ovs-vsctl.exe utilities/ovs-ofctl.exe \
-         utilities/ovs-dpctl.exe vswitchd/ovs-vswitchd.exe \
-         utilities/ovs-appctl.exe
+  % make
+
+* To run all the unit tests:
+
+  % make check
 
 OpenSSL, Open vSwitch and Visual C++
 ------------------------------------
diff --git a/utilities/ovs-benchmark.c b/utilities/ovs-benchmark.c
index 0bb316f..386e654 100644
--- a/utilities/ovs-benchmark.c
+++ b/utilities/ovs-benchmark.c
@@ -54,14 +54,26 @@ static const struct command *get_all_commands(void);
 static void parse_options(int argc, char *argv[]);
 static void usage(void);
 
+static int
+do_poll(struct pollfd *fds, int nfds, int timeout)
+{
+    int retval;
+#ifndef _WIN32
+    do {
+        retval = poll(fds, nfds, timeout);
+    } while (retval < 0 && errno == EINTR);
+#else
+    retval = WSAPoll(fds, nfds, timeout);
+#endif
+    return retval;
+}
+
 static long long int
 time_in_msec(void)
 {
     struct timeval tv;
 
-    if (gettimeofday(&tv, NULL) < 0) {
-        ovs_fatal(errno, "gettimeofday");
-    }
+    xgettimeofday(&tv);
 
     return tv.tv_sec * 1000LL + tv.tv_usec / 1000;
 }
@@ -284,9 +296,7 @@ cmd_listen(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
     for (;;) {
         int retval;
 
-        do {
-            retval = poll(fds, n_fds, -1);
-        } while (retval < 0 && errno == EINTR);
+        retval = do_poll(fds, n_fds, -1);
         if (retval < 0) {
             ovs_fatal(errno, "poll failed");
         }
@@ -445,9 +455,7 @@ cmd_rate(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
             delay = 1000;
         }
 
-        do {
-            error = poll(fds, n_fds, delay) < 0 ? errno : 0;
-        } while (error == EINTR);
+        error = do_poll(fds, n_fds, delay);
         if (error) {
             ovs_fatal(errno, "poll");
         }
@@ -578,9 +586,7 @@ cmd_latency(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
         while (n_fds > 0) {
             int error;
 
-            do {
-                error = poll(fds, n_fds, -1) < 0 ? errno : 0;
-            } while (error == EINTR);
+            error = do_poll(fds, n_fds, -1);
             if (error) {
                 ovs_fatal(errno, "poll");
             }
-- 
1.8.1.2




More information about the dev mailing list