libev/libuv interoperation with ev_async

Marc Lehmann schmorp at
Mon Nov 30 19:41:25 CET 2020

On Mon, Nov 30, 2020 at 09:29:48PM +0300, Mons Anderson <mons at> wrote:
> I've found that all I need to integrate them is to have access to
> evpipe (to put a watcher on it from another event loop), but libev
> interface doesn't provide any way to access it.

What exactly do you mean with evpipe? The internal evpipe member?

The problem is that it is not clear what you want to (or can) do with it
- its value and use is essentialy undocumented, undefined, and can change
at any time. I'd be hard presed to see what potential use its value could
be. Specifically, evpipe can NOT reliably tell you when an ev_async_send
is pending.

Note that libev does not protect its internal members, so you could embed
libev in a version where you understand and/or can guarantee that the evpipe
member works as you want it to, e.g. in my_ev.c:

   #include "ev.c"

   ... code can now read evpipe, so you can define a function here.

But for this to work reliably you probably have to patch libev anyway, to
make evpipe signal async sends reliably.

                The choice of a       Deliantra, the free code+content MORPG
      -----==-     _GNU_    
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      schmorp at
      -=====/_/_//_/\_,_/ /_/\_\

More information about the libev mailing list