TODO: confusion about threads ongiong
TODO: not_blocked flag.
-TODO: ev_sleep suffers from different backend_fudge...
- correct backend_fudge for most backends, and implement a windows
specific workaround to avoid looping because we call both
select and Sleep, both with different time resolutions.
- document range and guarantees of ev_sleep.
+ - document reasonable ranges for periodics interval and offset.
+ - rename backend_fudge to backend_mintime to avoid future confusion :)
- change the default periodic reschedule function to hopefully be more
exact and correct even in corner cases or in the far future.
- - document reasonable ranges for periodics interval and offset.
- do not rely on -lm anymore: use it when available but use our
own floor () if it is missing. This should make it easier to embed,
as no external libraries are required.
if (timercnt)
{
- ev_tstamp to = ANHE_at (timers [HEAP0]) - mn_now + backend_fudge;
+ ev_tstamp to = ANHE_at (timers [HEAP0]) - mn_now + backend_mintime;
if (waittime > to) waittime = to;
}
#if EV_PERIODIC_ENABLE
if (periodiccnt)
{
- ev_tstamp to = ANHE_at (periodics [HEAP0]) - ev_rt_now + backend_fudge;
+ ev_tstamp to = ANHE_at (periodics [HEAP0]) - ev_rt_now + backend_mintime;
if (waittime > to) waittime = to;
}
#endif
{
sleeptime = io_blocktime - (mn_now - prev_mn_now);
- if (sleeptime > waittime - backend_fudge)
- sleeptime = waittime - backend_fudge;
+ if (sleeptime > waittime - backend_mintime)
+ sleeptime = waittime - backend_mintime;
if (expect_true (sleeptime > 0.))
{
fcntl (backend_fd, F_SETFD, FD_CLOEXEC);
- backend_fudge = 1./1024.; /* epoll does sometimes return early, this is just to avoid the worst */
- backend_modify = epoll_modify;
- backend_poll = epoll_poll;
+ backend_mintime = 1./1024.; /* epoll does sometimes return early, this is just to avoid the worst */
+ backend_modify = epoll_modify;
+ backend_poll = epoll_poll;
epoll_eventmax = 64; /* initial number of events receivable per poll */
epoll_events = (struct epoll_event *)ev_malloc (sizeof (struct epoll_event) * epoll_eventmax);
fcntl (backend_fd, F_SETFD, FD_CLOEXEC); /* not sure if necessary, hopefully doesn't hurt */
- backend_fudge = 1e-9; /* apparently, they did the right thing in freebsd */
- backend_modify = kqueue_modify;
- backend_poll = kqueue_poll;
+ backend_mintime = 1e-9; /* apparently, they did the right thing in freebsd */
+ backend_modify = kqueue_modify;
+ backend_poll = kqueue_poll;
kqueue_eventmax = 64; /* initial number of events receivable per poll */
kqueue_events = (struct kevent *)ev_malloc (sizeof (struct kevent) * kqueue_eventmax);
int inline_size
poll_init (EV_P_ int flags)
{
- backend_fudge = 1e-3;
- backend_modify = poll_modify;
- backend_poll = poll_poll;
+ backend_mintime = 1e-3;
+ backend_modify = poll_modify;
+ backend_poll = poll_poll;
pollidxs = 0; pollidxmax = 0;
polls = 0; pollmax = 0; pollcnt = 0;
* up. Since we can't know what the case is, we need to guess by using a
* "large enough" timeout. Normally, 1e-9 would be correct.
*/
- backend_fudge = 1e-3; /* needed to compensate for port_getn returning early */
- backend_modify = port_modify;
- backend_poll = port_poll;
+ backend_mintime = 1e-3; /* needed to compensate for port_getn returning early */
+ backend_modify = port_modify;
+ backend_poll = port_poll;
port_eventmax = 64; /* initial number of events receivable per poll */
port_events = (port_event_t *)ev_malloc (sizeof (port_event_t) * port_eventmax);
int inline_size
select_init (EV_P_ int flags)
{
- backend_fudge = 1e-6;
- backend_modify = select_modify;
- backend_poll = select_poll;
+ backend_mintime = 1e-6;
+ backend_modify = select_modify;
+ backend_poll = select_poll;
#if EV_SELECT_USE_FD_SET
vec_ri = ev_malloc (sizeof (fd_set)); FD_ZERO ((fd_set *)vec_ri);
VARx(EV_ATOMIC_T, loop_done) /* signal by ev_break */
VARx(int, backend_fd)
-VARx(ev_tstamp, backend_fudge) /* assumed typical timer resolution */
+VARx(ev_tstamp, backend_mintime) /* assumed typical timer resolution */
VAR (backend_modify, void (*backend_modify)(EV_P_ int fd, int oev, int nev))
VAR (backend_poll , void (*backend_poll)(EV_P_ ev_tstamp timeout))
#define activecnt ((loop)->activecnt)
#define loop_done ((loop)->loop_done)
#define backend_fd ((loop)->backend_fd)
-#define backend_fudge ((loop)->backend_fudge)
+#define backend_mintime ((loop)->backend_mintime)
#define backend_modify ((loop)->backend_modify)
#define backend_poll ((loop)->backend_poll)
#define anfds ((loop)->anfds)
#undef activecnt
#undef loop_done
#undef backend_fd
-#undef backend_fudge
+#undef backend_mintime
#undef backend_modify
#undef backend_poll
#undef anfds