On Wed, Sep 30, 2015 at 2:29 PM, Alin Serdean <[email protected]> wrote: > I think it would be nice to have > ovs_assert(!fd != !wevent); > ifdefed under Windows. > And on the rest of the platforms: > ovs_assert(!fd != !wevent);
I did not follow what you meant above at all. Can you elaborate? > > And probably also for poll_create_node as well. > > Like Ilya and Nikita were mentioning. > > Otherwise: > Acked-by: Alin Gabriel Serdean <[email protected]> > > >> -----Mesaj original----- >> De la: Gurucharan Shetty [mailto:[email protected]] >> Trimis: Thursday, October 1, 2015 12:19 AM >> Către: [email protected] >> Cc: Alin Serdean <[email protected]>; Gurucharan Shetty >> <[email protected]> >> Subiect: [PATCH] poll-loop: Fix a bug while finding a poll node. >> >> When a poll_node is created, it gets either a 'fd' or a 'wevent' (can't get >> both). When the poll_node is searched for previous creations on that 'fd' or >> 'wevent', the search criteria was wrong for Windows. In Windows, when a >> 'fd' is received in poll_create_node, we create a corresponding 'wevent'. So >> while searching for that 'fd', we should not look for 'wevent' in the >> hmap_node. >> >> Reported-by: Alin Gabriel Serdean <[email protected]> >> Signed-off-by: Gurucharan Shetty <[email protected]> >> --- >> lib/poll-loop.c | 8 ++++++-- >> 1 file changed, 6 insertions(+), 2 deletions(-) >> >> diff --git a/lib/poll-loop.c b/lib/poll-loop.c index 3c4b55c..60e1f6e 100644 >> --- a/lib/poll-loop.c >> +++ b/lib/poll-loop.c >> @@ -57,16 +57,20 @@ struct poll_loop { >> >> static struct poll_loop *poll_loop(void); >> >> -/* Look up the node with same fd and wevent. */ >> +/* Look up the node with same fd or wevent. */ >> static struct poll_node * >> find_poll_node(struct poll_loop *loop, int fd, HANDLE wevent) { >> struct poll_node *node; >> >> + /* Both 'fd' and 'wevent' cannot be set. */ >> + ovs_assert(!fd != !wevent); >> + >> HMAP_FOR_EACH_WITH_HASH (node, hmap_node, >> hash_2words(fd, (uint32_t)wevent), >> &loop->poll_nodes) { >> - if (node->pollfd.fd == fd && node->wevent == wevent) { >> + if ((fd && node->pollfd.fd == fd) >> + || (wevent && node->wevent == wevent)) { >> return node; >> } >> } >> -- >> 1.7.9.5 > _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
