On 19/07/2021 21:52, Ben Pfaff wrote:
On Fri, Jul 16, 2021 at 02:42:32PM +0100, [email protected] wrote:
From: Anton Ivanov <[email protected]>
If we are not obtaining any useful information out of the poll(),
such as is a fd busy or not, we do not need to do a poll() if
an immediate_wake() has been requested.
This cuts out all the pollfd hash additions, forming the poll
arguments and the actual poll() after a call to
poll_immediate_wake()
Signed-off-by: Anton Ivanov <[email protected]>
Thanks for v3.
I believe that the existing code here properly handles the pathological
case where the current time is less than 0. This is a case that I have
seen happen on real systems that have a real-time clock with a bad
current time and do not have proper support for a monotonic clock. I
believe that your new code does not properly handle this case, because
it treats all times less than 0 as immediate. I think that you can fix
it by comparing against LLONG_MIN rather than zero.
In poll-loop, I would move
COVERAGE_INC(poll_zero_timeout);
inside the new statement that is already conditional on timeout_when ==
LLONG_MIN.
I don't like the new assumption in time_poll() that n_pollfds == 0 means
we're waking immediately.
Thanks,
Ben.
Updated, all logic is now strictly based on timeout == LLONG_MIN.
I got a weird test failure from the build robot which I cannot reproduce. I ran
the test which failed ~ 100 iterations and then the test suite for about an
hour. No failures.
Best Regards,
--
Anton R. Ivanov
Cambridgegreys Limited. Registered in England. Company Number 10273661
https://www.cambridgegreys.com/
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev