On Mon, Apr 9, 2012 at 2:45 PM, xuty1985 <xuty1985@...
> But I still failed to pass "make check":
> First, there's an error as following:
> Poller_test.cc:389: error: cast from `FILE*' to `int' loses precision
> So I commented line #389, and "make check" again,
Fine; the right fix is
> This time it tells:
> check: 0 != 22 at line 351 file Poller_test.cc
That's interesting. The failing code is
342 // Create a pipe so we have file descriptors
to watch with Poller.
343 // We use a pipe rather than a file or socket
because it's easy to
344 // generate readiness events by writing to one
end of the pipe.
345 CHECK(0, pipe(m_filedes));
346 CHECK(0, setNonblocking(m_filedes));
347 CHECK(0, setNonblocking(m_filedes));
349 // Watch our 2 test file descriptors, and
count their readiness events.
350 // The same client watches both file descriptors.
351 CHECK(0, m_p.add(m_filedes, this, POLLOUT));
352 CHECK(0, m_p.add(m_filedes, this, POLLIN|POLLPRI));
It seems reasonable for a pipe to be writable straight off, so maybe Linux
has changed its behavior over the years. You can probably ignore the