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 <[email protected]>
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
[email protected]
http://openvswitch.org/mailman/listinfo/dev