Il 03/07/2014 13:50, Ming Lei ha scritto:
Yes, you can just move the atomic_inc/atomic_dec in aio_poll.

If you mean move inc/dec of 'running' in aio_poll, that won't work.
When aio_notify() sees 'running', it won't set notifier, and may
trap to ppoll().

I mean move it to aio_poll, around the second invocation of aio_dispatch.

IIRC the first invocation of aio_dispatch is only used when AioContext is running as a GSource. It should never run for dataplane, so it's okay if we only trap aio_notify from the second aio_dispatch().

In 2.2, we should rewrite aio_poll() to follow the prepare/poll/check/dispatch model of glib. Then the optimization becomes much simpler (you only call aio_dispatch once) and it also works for GSource mode.

Stefan convinced me to send the patch myself, so I will do it now.

Paolo

Reply via email to