summaryrefslogtreecommitdiff
path: root/lib/timeval.h
diff options
context:
space:
mode:
authorEthan Jackson <ethan@nicira.com>2012-10-05 13:24:21 -0700
committerEthan Jackson <ethan@nicira.com>2012-10-09 15:23:47 -0700
commit361906b1e2c6482d77280f345d3e42048d8c2700 (patch)
treebcd6efea6aea35a9c1e872ff68e230e2e9406ccc /lib/timeval.h
parent2de795adb9632fc07ea49ced36eaa17c3f3fd106 (diff)
downloadopenvswitch-361906b1e2c6482d77280f345d3e42048d8c2700.tar.gz
config: Add explicit support for building on ESX.
The ESX userspace looks quite a bit like linux, but has some key differences which need to be specially handled in the build. To distinguish between ESX and systems which use the linux datapath module, this patch adds two new macros "ESX" and "LINUX_DATAPATH". It uses these macros to disable building code on ESX which only applies to a true Linux environment. In addition, it adds a new route-table-stub implementation which is required for the build to complete successfully on ESX. Signed-off-by: Ethan Jackson <ethan@nicira.com>
Diffstat (limited to 'lib/timeval.h')
-rw-r--r--lib/timeval.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/timeval.h b/lib/timeval.h
index d9eb3c7a6..cb5191c5e 100644
--- a/lib/timeval.h
+++ b/lib/timeval.h
@@ -44,6 +44,22 @@ BUILD_ASSERT_DECL(TYPE_IS_SIGNED(time_t));
* much time will be wasted in signal handlers and calls to clock_gettime(). */
#define TIME_UPDATE_INTERVAL 100
+/* True on systems (particularly x86-64 Linux) where clock_gettime() is
+ * inexpensive. On these systems, we don't bother caching the current time.
+ * Instead, we consult clock_gettime() directly when needed.
+ *
+ * False on systems where clock_gettime() is relatively expensive. On these
+ * systems, we cache the current time and set up a periodic SIGALRM to remind
+ * us to update it.
+ *
+ * Also false on systems (e.g. ESX) that don't support setting up timers based
+ * on a monotonically increasing clock. */
+#if defined ESX || (defined __x86_64__ && defined LINUX_DATAPATH)
+#define CACHE_TIME 0
+#else
+#define CACHE_TIME 1
+#endif
+
void time_disable_restart(void);
void time_enable_restart(void);
void time_postfork(void);