I had an issue using davici with edge-triggered epoll events. I would sometimes get two events before I could read them, and it looks like davici_read() would process one event only and return 0. But also, if there are no events left, davici_read() returns 0. It seems like either davici_read() should process events until EAGAIN, or else it should return EAGAIN if there are no events to process, so that I can call davici_read() repeatedly until EAGAIN.
I had an issue using davici with edge-triggered epoll events. I would sometimes get two events before I could read them, and it looks like davici_read() would process one event only and return 0. But also, if there are no events left, davici_read() returns 0. It seems like either davici_read() should process events until EAGAIN, or else it should return EAGAIN if there are no events to process, so that I can call davici_read() repeatedly until EAGAIN.