libstdc++: Allow net::io_context to compile without <poll.h> [PR 100180]
This adds dummy placeholders to net::io_context so that it can still be compiled on targets without <poll.h>. libstdc++-v3/ChangeLog: PR libstdc++/100180 * include/experimental/io_context (io_context): Define dummy_pollfd type so that most member functions still compile without <poll.h> and struct pollfd.
This commit is contained in:
parent
3517dfe05c
commit
0e1e7b7790
1 changed files with 13 additions and 2 deletions
|
@ -716,6 +716,7 @@ inline namespace v1
|
|||
|
||||
struct __reactor
|
||||
{
|
||||
#ifdef _GLIBCXX_HAVE_POLL_H
|
||||
__reactor() : _M_fds(1)
|
||||
{
|
||||
int __pipe[2];
|
||||
|
@ -739,6 +740,7 @@ inline namespace v1
|
|||
::close(_M_fds.back().fd);
|
||||
::close(_M_notify_wr);
|
||||
}
|
||||
#endif
|
||||
|
||||
// write a notification byte to the pipe (ignoring errors)
|
||||
void _M_notify()
|
||||
|
@ -799,8 +801,12 @@ inline namespace v1
|
|||
_M_notify();
|
||||
}
|
||||
|
||||
# ifdef _GLIBCXX_HAVE_POLL_H
|
||||
#ifdef _GLIBCXX_HAVE_POLL_H
|
||||
using __fdvec = vector<::pollfd>;
|
||||
#else
|
||||
struct dummy_pollfd { int fd = -1; short events = 0, revents = 0; };
|
||||
using __fdvec = vector<dummy_pollfd>;
|
||||
#endif
|
||||
|
||||
// Find first element p such that !(p.fd < __fd)
|
||||
// N.B. always returns a dereferencable iterator.
|
||||
|
@ -816,6 +822,7 @@ inline namespace v1
|
|||
__status
|
||||
wait(__fdvec& __fds, chrono::milliseconds __timeout)
|
||||
{
|
||||
#ifdef _GLIBCXX_HAVE_POLL_H
|
||||
// XXX not thread-safe!
|
||||
__fds = _M_fds; // take snapshot to pass to poll()
|
||||
|
||||
|
@ -845,10 +852,14 @@ inline namespace v1
|
|||
__fds.erase(__part, __fds.end());
|
||||
|
||||
return _S_ok;
|
||||
#else
|
||||
(void) __timeout;
|
||||
__fds.clear();
|
||||
return _S_error;
|
||||
#endif
|
||||
}
|
||||
|
||||
__fdvec _M_fds; // _M_fds.back() is the read end of the self-pipe
|
||||
#endif
|
||||
int _M_notify_wr; // write end of the self-pipe
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue