]> git.llucax.com Git - software/libev.git/commitdiff
*** empty log message ***
authorroot <root>
Mon, 3 Dec 2007 13:41:24 +0000 (13:41 +0000)
committerroot <root>
Mon, 3 Dec 2007 13:41:24 +0000 (13:41 +0000)
ev.c
ev.h
ev.pod
ev_vars.h
ev_wrap.h

diff --git a/ev.c b/ev.c
index 9f7e2bedbf643e053c7177683601f3c40e83d4fd..8cb61413c15c2cc048cb97d74f13f7f14adc017b 100644 (file)
--- a/ev.c
+++ b/ev.c
@@ -888,6 +888,12 @@ ev_backend (EV_P)
   return backend;
 }
 
+unsigned int
+ev_loop_count (EV_P)
+{
+  return loop_count;
+}
+
 static void noinline
 loop_init (EV_P_ unsigned int flags)
 {
@@ -1420,6 +1426,7 @@ ev_loop (EV_P_ int flags)
             if (expect_false (block < 0.)) block = 0.;
           }
 
+        ++loop_count;
         backend_poll (EV_A_ block);
       }
 
diff --git a/ev.h b/ev.h
index ad9bb8eca11ddd890219f8775b1f6bae2f1319a3..946963d2e6d0630ad78d2c021c72a5c5272a983f 100644 (file)
--- a/ev.h
+++ b/ev.h
@@ -388,6 +388,7 @@ void ev_default_destroy (void); /* destroy the default loop */
 void ev_default_fork (void);
 
 unsigned int ev_backend (EV_P);
+unsigned int ev_loop_count (EV_P);
 #endif
 
 #define EVLOOP_NONBLOCK        1 /* do not block/wait */
diff --git a/ev.pod b/ev.pod
index ed0ac1b9a519e1716e2ceb45874ef263e429dbd3..f372d944b4f5b9f8be53387664ca326420ccc6ef 100644 (file)
--- a/ev.pod
+++ b/ev.pod
@@ -432,6 +432,16 @@ Like C<ev_default_fork>, but acts on an event loop created by
 C<ev_loop_new>. Yes, you have to call this on every allocated event loop
 after fork, and how you do this is entirely your own problem.
 
+=item unsigned int ev_loop_count (loop)
+
+Returns the count of loop iterations for the loop, which is identical to
+the number of times libev did poll for new events. It starts at C<0> and
+happily wraps around with enough iterations.
+
+This value can sometimes be useful as a generation counter of sorts (it
+"ticks" the number of loop iterations), as it roughly corresponds with
+C<ev_prepare> and C<ev_check> calls.
+
 =item unsigned int ev_backend (loop)
 
 Returns one of the C<EVBACKEND_*> flags indicating the event backend in
index 6b0c3e98e0c5add0fc2dc4f35515fd434597af82..fa6ae9b3ba04e1b24a4172f309359c6aea438e2a 100644 (file)
--- a/ev_vars.h
+++ b/ev_vars.h
@@ -5,6 +5,7 @@ VARx(ev_tstamp, mn_now)    /* monotonic clock "now" */
 VARx(ev_tstamp, rtmn_diff) /* difference realtime - monotonic time */
 VARx(int, backend)
 VARx(int, activecnt) /* total number of active events ("refcount") */
+VARx(unsigned int, loop_count); /* total number of loop iterations/blocks */
 
 VARx(ev_tstamp, backend_fudge) /* assumed typical timer resolution */
 VAR (backend_modify, void (*backend_modify)(EV_P_ int fd, int oev, int nev))
index c0d9ce0f31a6fd9a1830c0f3a5a906beb9c9dfc6..957d5fa2666afd6196849ce771944b988e211f09 100644 (file)
--- a/ev_wrap.h
+++ b/ev_wrap.h
@@ -4,6 +4,7 @@
 #define rtmn_diff ((loop)->rtmn_diff)
 #define backend ((loop)->backend)
 #define activecnt ((loop)->activecnt)
+#define loop_count ((loop)->loop_count);
 #define backend_fudge ((loop)->backend_fudge)
 #define backend_modify ((loop)->backend_modify)
 #define backend_poll ((loop)->backend_poll)