return backend;
}
+unsigned int
+ev_loop_count (EV_P)
+{
+ return loop_count;
+}
+
static void noinline
loop_init (EV_P_ unsigned int flags)
{
if (expect_false (block < 0.)) block = 0.;
}
+ ++loop_count;
backend_poll (EV_A_ block);
}
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 */
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
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))
#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)