On Fri, Jul 11, 2014 at 01:01:26AM +0000, Alin Serdean wrote:
> Bypass epoll_ctl, epoll_create and epoll_wait functions on MSVC.
> 
> Signed-off-by: Alin Gabriel Serdean <aserd...@cloudbasesolutions.com>

What's the substitute for these on Windows?  Maybe it was supposed to
be in this hunk, which appears incomplete and wrong:
> +#else
> +     for (int idx = 0; idx < dpif->uc_array_size; ++idx)
> +     {
> +             struct dpif_channel *ch = 
> &dpif->handlers[handler_id].channels[idx];
> +
> +#endif

This patch looks incomplete otherwise, because I see remaining
references to epoll_fd, e.g. in destroy_all_channels():
        close(handler->epoll_fd);
and dpif_linux_recv_wait__():
        poll_fd_wait(handler->epoll_fd, POLLIN);

By the way, dpif-linux relies on some properties of epoll that aren't
obtained just by waiting on all the individual fds in place of a
single epoll fd.  In particular, if thread A calls
dpif_linux_recv_wait(), then blocks in poll_block() waiting for some
packet to be received, and thread B adds or removes ports, thread A
will wake up for packets received on the *updated* set of ports as
modified by thread B.  It gets that "for free" because that's how
epoll sets work.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to