diff --git a/third_party/libev/ev.c b/third_party/libev/ev.c
index c9b0ca4e94db5fcc912052e53e0de12212826e35..6a2648591961476e08b20c412c1fdef91feeb250 100644
--- a/third_party/libev/ev.c
+++ b/third_party/libev/ev.c
@@ -1902,6 +1902,18 @@ ev_now (EV_P) EV_THROW
 }
 #endif
 
+ev_tstamp
+ev_monotonic_now (EV_P) EV_THROW
+{
+  return mn_now;
+}
+
+ev_tstamp
+ev_monotonic_time (void) EV_THROW
+{
+  return get_clock();
+}
+
 void
 ev_sleep (ev_tstamp delay) EV_THROW
 {
diff --git a/third_party/libev/ev.h b/third_party/libev/ev.h
index 6c0e59cafd532d68b21b06abb8b4b369a92c5064..d42e2df4769a4d7279b7ab97c901774550b0ea8c 100644
--- a/third_party/libev/ev.h
+++ b/third_party/libev/ev.h
@@ -606,6 +606,9 @@ ev_is_default_loop (void) EV_THROW
 
 #endif /* multiplicity */
 
+EV_API_DECL ev_tstamp ev_monotonic_time (void) EV_THROW;
+EV_API_DECL ev_tstamp ev_monotonic_now (EV_P) EV_THROW;
+
 /* destroy event loops, also works for the default loop */
 EV_API_DECL void ev_loop_destroy (EV_P);