Browse Source

*** empty log message ***

master
Marc Alexander Lehmann 1 year ago
parent
commit
ebd88ad8a1
  1. 8
      Changes
  2. 4
      ev.c
  3. 14
      ev_iouring.c

8
Changes

@ -4,8 +4,16 @@ TODO: revisit 59.x timer in the light of modern powersaving
TODO: maybe use timerfd to detect time jumps on linux
TODO: document EV_TSTAMP_T
4.31
- handle backends with minimum wait time a bit better by not
waiting in the presence of already-expired timers
(behaviour reported by Felipe Gsper).
4.30 (EV only)
- change non-autoconf test for __kernel_rwf_t by testing
LINUX_VERSION_CODE, the most direct test I could find.
- fix a bug in the io_uring backend that polled the wrong
backend fd, causing it to not work in many cases.
4.29 (EV only)
- add io uring autoconf and non-autoconf detection.

4
ev.c

@ -3862,8 +3862,8 @@ ev_run (EV_P_ int flags)
/* now there are two more special cases left, either we have
* already-expired timers, so we should not sleep, or we have timers
* that expire very soon, in which case we need to weait for a minimum
* amount of time for some event loop backends
* that expire very soon, in which case we need to wait for a minimum
* amount of time for some event loop backends.
*/
if (ecb_expect_false (waittime < backend_mintime))
waittime = waittime <= EV_TS_CONST (0.)

14
ev_iouring.c

@ -578,7 +578,7 @@ iouring_poll (EV_P_ ev_tstamp timeout)
/* no events, so maybe wait for some */
iouring_tfd_update (EV_A_ timeout);
/* only enter the kernel if we have somethign to submit, or we need to wait */
/* only enter the kernel if we have something to submit, or we need to wait */
if (timeout || iouring_to_submit)
{
int res;
@ -608,12 +608,6 @@ iouring_init (EV_P_ int flags)
if (!epoll_init (EV_A_ 0))
return 0;
ev_io_init (&iouring_epoll_w, iouring_epoll_cb, backend_fd, EV_READ);
ev_set_priority (&iouring_epoll_w, EV_MAXPRI);
ev_io_init (&iouring_tfd_w, iouring_tfd_cb, iouring_tfd, EV_READ);
ev_set_priority (&iouring_tfd_w, EV_MAXPRI);
iouring_entries = IOURING_INIT_ENTRIES;
iouring_max_entries = 0;
@ -623,6 +617,12 @@ iouring_init (EV_P_ int flags)
return 0;
}
ev_io_init (&iouring_epoll_w, iouring_epoll_cb, backend_fd, EV_READ);
ev_set_priority (&iouring_epoll_w, EV_MAXPRI);
ev_io_init (&iouring_tfd_w, iouring_tfd_cb, iouring_tfd, EV_READ);
ev_set_priority (&iouring_tfd_w, EV_MAXPRI);
ev_io_start (EV_A_ &iouring_epoll_w);
ev_unref (EV_A); /* watcher should not keep loop alive */

Loading…
Cancel
Save