]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Add method ev_now_update_if_cheap
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 1 Nov 2019 12:32:14 +0000 (12:32 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 1 Nov 2019 12:32:14 +0000 (12:32 +0000)
contrib/libev/ev.c
contrib/libev/ev.h

index 38438e7456bae63dcf9c19495751b4c3120b35f2..de32e1781044b967ba91a20d81182aaac35c0235 100644 (file)
@@ -1572,6 +1572,7 @@ static EV_ATOMIC_T have_realtime; /* did clock_gettime (CLOCK_REALTIME) work? */
 static EV_ATOMIC_T have_monotonic; /* did clock_gettime (CLOCK_MONOTONIC) work? */
 static EV_ATOMIC_T monotinic_clock_id;
 #endif
+static EV_ATOMIC_T have_cheap_timer = 0;
 
 #ifndef EV_FD_TO_WIN32_HANDLE
 # define EV_FD_TO_WIN32_HANDLE(fd) _get_osfhandle (fd)
@@ -2898,6 +2899,7 @@ loop_init (EV_P_ unsigned int flags) EV_NOEXCEPT
     !clock_getres ((id), &ts)) { \
     if (ts.tv_sec == 0 && ts.tv_nsec < 10ULL * 1000000) { \
       monotinic_clock_id = (id); \
+      have_cheap_timer = 1; \
     } \
   } \
 } while(0)
@@ -3808,6 +3810,12 @@ ev_now_update (EV_P) EV_NOEXCEPT
   time_update (EV_A_ 1e100);
 }
 
+void
+ev_now_update_if_cheap (EV_P) EV_NOEXCEPT
+{
+  if (have_cheap_timer) time_update (EV_A_ 1e100);
+}
+
 void
 ev_suspend (EV_P) EV_NOEXCEPT
 {
index 4b7503d3de79c37a4467a83076b8cb15d9b731f0..9d3e4f2fdb10c3e66e658274bc550d9216f0f724 100644 (file)
@@ -596,6 +596,11 @@ EV_API_DECL void ev_loop_fork (EV_P) EV_NOEXCEPT;
 EV_API_DECL unsigned int ev_backend (EV_P) EV_NOEXCEPT; /* backend in use by loop */
 
 EV_API_DECL void ev_now_update (EV_P) EV_NOEXCEPT; /* update event loop time */
+/*
+ * Same as ev_now_update, but will update time merely if cheap (coarse) timers
+ * are used in system.
+ */
+EV_API_DECL void ev_now_update_if_cheap (EV_P) EV_NOEXCEPT;
 
 #if EV_WALK_ENABLE
 /* walk (almost) all watchers in the loop of a given type, invoking the */