[Tarantool-patches] [PATCH v6 1/4] coio: Export helpers and provide coio_read_fd_timeout

Cyrill Gorcunov gorcunov at gmail.com
Fri Dec 20 17:50:44 MSK 2019


On Fri, Dec 20, 2019 at 10:48:47AM +0300, Konstantin Osipov wrote:
> * Cyrill Gorcunov <gorcunov at gmail.com> [19/12/17 15:57]:
> > There is no reason to hide functions. In particular
> > we will use coio_write_fd_timeout and coio_read_fd_timeout
> > for popen.
> 
> AFAIU the only difference between the new function and
> coio_read_timeout() is that the new function works without 
> struct coio* object, but uses coio_wait(), which creates/
> destroys this object on demand.

Yes. This allows us to reuse it instead of code duplication.

> 
> Could you provide a rationale for this? coio_wait has to call 
> EPOLL_CTL_ADD/EPOLL_CTL_DEL on every wait, so it tripples the 
> number of syscalls per wait. 

But how else we can do that? libev uses poll internally to find
out if there some "event" in the event queue (timer event, io
event and such). Could you please elaborate which idea you have?

Indeed every time we start io on fd, the libev puts this fd into
watchee list to be notified if there some event to handle. I must
admit I don't see an other way.

> 
> On the other hand I realize that it's not super important
> for popen IO, but still I don't understand *why* you need this.


More information about the Tarantool-patches mailing list