On Wed, Jul 5, 2023 at 3:38 PM Tage Johansson <tage.j.li...@posteo.net> wrote:
> As part of the Rust bindings for Libnbd, I try to integrate the > asynchronous (aio_*) functions with Tokio > <https://docs.rs/tokio/latest/tokio/>, the most used asynchronous runtime > in Rust. However, in its eventloop, Tokio uses epoll(7) instead of poll(2) > (which is used internally in Libnbd). The difference is that poll(2) uses > level-triggered notifications as aposed to epoll(7) which uses > edge-triggered notifications. > According to epoll(7) section "Level-triggered and edge-triggered" says: By contrast, when used as a level-triggered interface (the default, when EPOLLET is not specified), epoll is simply a faster poll(2), and can be used wherever the latter is used since it shares the same seman‐ tics. So you should not have any issue using epoll instead of poll. > - After calling aio_get_direction(3), can I know that reading/writing > would actually block? > No, this is just the events that libnbd wants to get. - After calling for example aio_notify_read(3), can I know that the next > reading from the file descriptor would block? > No, you have to call again aio_get_direction() and poll again until the event happens. Nir
_______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs