mirror of /home/gitosis/repositories/libev.git
*** empty log message ***
parent
40a5fc301b
commit
c732a57dc6
4
Changes
4
Changes
|
@ -5,14 +5,14 @@ TODO: ev_loop_wakeup
|
|||
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.
|
||||
|
|
8
ev.c
8
ev.c
|
@ -2507,14 +2507,14 @@ ev_run (EV_P_ int flags)
|
|||
|
||||
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
|
||||
|
@ -2528,8 +2528,8 @@ ev_run (EV_P_ int flags)
|
|||
{
|
||||
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.))
|
||||
{
|
||||
|
|
|
@ -236,9 +236,9 @@ epoll_init (EV_P_ int flags)
|
|||
|
||||
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);
|
||||
|
|
|
@ -161,9 +161,9 @@ kqueue_init (EV_P_ int flags)
|
|||
|
||||
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);
|
||||
|
|
|
@ -129,9 +129,9 @@ poll_poll (EV_P_ ev_tstamp timeout)
|
|||
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;
|
||||
|
|
|
@ -153,9 +153,9 @@ port_init (EV_P_ int flags)
|
|||
* 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);
|
||||
|
|
|
@ -274,9 +274,9 @@ select_poll (EV_P_ ev_tstamp timeout)
|
|||
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);
|
||||
|
|
|
@ -51,7 +51,7 @@ VARx(int, activecnt) /* total number of active events ("refcount") */
|
|||
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))
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#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)
|
||||
|
@ -107,7 +107,7 @@
|
|||
#undef activecnt
|
||||
#undef loop_done
|
||||
#undef backend_fd
|
||||
#undef backend_fudge
|
||||
#undef backend_mintime
|
||||
#undef backend_modify
|
||||
#undef backend_poll
|
||||
#undef anfds
|
||||
|
|
Loading…
Reference in New Issue