diff options
author | Stefan Hajnoczi <stefanha@redhat.com> | 2020-03-05 17:08:05 +0000 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@redhat.com> | 2020-03-09 16:41:31 +0000 |
commit | aa38e19f05c3a5ae64dff84f44e1aa31281a5b14 (patch) | |
tree | 511a1cbddc11aee4e8b4ff22469189136cc125d9 /util/fdmon-poll.c | |
parent | 73fd282e7b6dd4e4ea1c3bbb3d302c8db51e4ccf (diff) | |
download | qemu-aa38e19f05c3a5ae64dff84f44e1aa31281a5b14.zip qemu-aa38e19f05c3a5ae64dff84f44e1aa31281a5b14.tar.gz qemu-aa38e19f05c3a5ae64dff84f44e1aa31281a5b14.tar.bz2 |
aio-posix: support userspace polling of fd monitoring
Unlike ppoll(2) and epoll(7), Linux io_uring completions can be polled
from userspace. Previously userspace polling was only allowed when all
AioHandler's had an ->io_poll() callback. This prevented starvation of
fds by userspace pollable handlers.
Add the FDMonOps->need_wait() callback that enables userspace polling
even when some AioHandlers lack ->io_poll().
For example, it's now possible to do userspace polling when a TCP/IP
socket is monitored thanks to Linux io_uring.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Link: https://lore.kernel.org/r/20200305170806.1313245-7-stefanha@redhat.com
Message-Id: <20200305170806.1313245-7-stefanha@redhat.com>
Diffstat (limited to 'util/fdmon-poll.c')
-rw-r--r-- | util/fdmon-poll.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/util/fdmon-poll.c b/util/fdmon-poll.c index 28114a0..488067b 100644 --- a/util/fdmon-poll.c +++ b/util/fdmon-poll.c @@ -103,4 +103,5 @@ static void fdmon_poll_update(AioContext *ctx, const FDMonOps fdmon_poll_ops = { .update = fdmon_poll_update, .wait = fdmon_poll_wait, + .need_wait = aio_poll_disabled, }; |