diff options
author | root <root> | 2007-12-03 13:41:24 +0000 |
---|---|---|
committer | root <root> | 2007-12-03 13:41:24 +0000 |
commit | eb7909955a094de6e667e3e9f88ddbad46fc93b6 (patch) | |
tree | bac295fb43e74b3390fa853d4d4169bc9b520aec | |
parent | f6cc1f750a321b2c6e30637963d3e624c7a8e5ae (diff) |
*** empty log message ***
-rw-r--r-- | ev.c | 7 | ||||
-rw-r--r-- | ev.h | 1 | ||||
-rw-r--r-- | ev.pod | 10 | ||||
-rw-r--r-- | ev_vars.h | 1 | ||||
-rw-r--r-- | ev_wrap.h | 1 |
5 files changed, 20 insertions, 0 deletions
@@ -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); } @@ -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 */ @@ -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 @@ -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)) @@ -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) |