mirror of
https://github.com/qemu/qemu.git
synced 2025-10-24 19:01:24 +00:00
Add flags to io_writev and introduce io_flush as optional callback to QIOChannelClass, allowing the implementation of zero copy writes by subclasses. How to use them: - Write data using qio_channel_writev*(...,QIO_CHANNEL_WRITE_FLAG_ZERO_COPY), - Wait write completion with qio_channel_flush(). Notes: As some zero copy write implementations work asynchronously, it's recommended to keep the write buffer untouched until the return of qio_channel_flush(), to avoid the risk of sending an updated buffer instead of the buffer state during write. As io_flush callback is optional, if a subclass does not implement it, then: - io_flush will return 0 without changing anything. Also, some functions like qio_channel_writev_full_all() were adapted to receive a flag parameter. That allows shared code between zero copy and non-zero copy writev, and also an easier implementation on new flags. Signed-off-by: Leonardo Bras <leobras@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Message-Id: <20220513062836.965425-3-leobras@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> |
||
|---|---|---|
| .. | ||
| baum.c | ||
| char-console.c | ||
| char-fd.c | ||
| char-fe.c | ||
| char-file.c | ||
| char-io.c | ||
| char-mux.c | ||
| char-null.c | ||
| char-parallel.c | ||
| char-pipe.c | ||
| char-pty.c | ||
| char-ringbuf.c | ||
| char-serial.c | ||
| char-socket.c | ||
| char-stdio.c | ||
| char-udp.c | ||
| char-win-stdio.c | ||
| char-win.c | ||
| char.c | ||
| chardev-internal.h | ||
| meson.build | ||
| msmouse.c | ||
| spice.c | ||
| testdev.c | ||
| trace-events | ||
| trace.h | ||
| wctablet.c | ||