include: move coroutine IO functions to coroutine.h
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20220323155743.1585078-20-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
3bd04c091e
commit
c097f1e603
@ -45,29 +45,6 @@ bool set_preferred_target_page_bits(int bits);
|
||||
*/
|
||||
void finalize_target_page_bits(void);
|
||||
|
||||
/**
|
||||
* Sends a (part of) iovec down a socket, yielding when the socket is full, or
|
||||
* Receives data into a (part of) iovec from a socket,
|
||||
* yielding when there is no data in the socket.
|
||||
* The same interface as qemu_sendv_recvv(), with added yielding.
|
||||
* XXX should mark these as coroutine_fn
|
||||
*/
|
||||
ssize_t qemu_co_sendv_recvv(int sockfd, struct iovec *iov, unsigned iov_cnt,
|
||||
size_t offset, size_t bytes, bool do_send);
|
||||
#define qemu_co_recvv(sockfd, iov, iov_cnt, offset, bytes) \
|
||||
qemu_co_sendv_recvv(sockfd, iov, iov_cnt, offset, bytes, false)
|
||||
#define qemu_co_sendv(sockfd, iov, iov_cnt, offset, bytes) \
|
||||
qemu_co_sendv_recvv(sockfd, iov, iov_cnt, offset, bytes, true)
|
||||
|
||||
/**
|
||||
* The same as above, but with just a single buffer
|
||||
*/
|
||||
ssize_t qemu_co_send_recv(int sockfd, void *buf, size_t bytes, bool do_send);
|
||||
#define qemu_co_recv(sockfd, buf, bytes) \
|
||||
qemu_co_send_recv(sockfd, buf, bytes, false)
|
||||
#define qemu_co_send(sockfd, buf, bytes) \
|
||||
qemu_co_send_recv(sockfd, buf, bytes, true)
|
||||
|
||||
void qemu_progress_init(int enabled, float min_skip);
|
||||
void qemu_progress_end(void);
|
||||
void qemu_progress_print(float delta, int max);
|
||||
|
@ -343,4 +343,27 @@ void qemu_coroutine_decrease_pool_batch_size(unsigned int additional_pool_size);
|
||||
|
||||
#include "qemu/lockable.h"
|
||||
|
||||
/**
|
||||
* Sends a (part of) iovec down a socket, yielding when the socket is full, or
|
||||
* Receives data into a (part of) iovec from a socket,
|
||||
* yielding when there is no data in the socket.
|
||||
* The same interface as qemu_sendv_recvv(), with added yielding.
|
||||
* XXX should mark these as coroutine_fn
|
||||
*/
|
||||
ssize_t qemu_co_sendv_recvv(int sockfd, struct iovec *iov, unsigned iov_cnt,
|
||||
size_t offset, size_t bytes, bool do_send);
|
||||
#define qemu_co_recvv(sockfd, iov, iov_cnt, offset, bytes) \
|
||||
qemu_co_sendv_recvv(sockfd, iov, iov_cnt, offset, bytes, false)
|
||||
#define qemu_co_sendv(sockfd, iov, iov_cnt, offset, bytes) \
|
||||
qemu_co_sendv_recvv(sockfd, iov, iov_cnt, offset, bytes, true)
|
||||
|
||||
/**
|
||||
* The same as above, but with just a single buffer
|
||||
*/
|
||||
ssize_t qemu_co_send_recv(int sockfd, void *buf, size_t bytes, bool do_send);
|
||||
#define qemu_co_recv(sockfd, buf, bytes) \
|
||||
qemu_co_send_recv(sockfd, buf, bytes, false)
|
||||
#define qemu_co_send(sockfd, buf, bytes) \
|
||||
qemu_co_send_recv(sockfd, buf, bytes, true)
|
||||
|
||||
#endif /* QEMU_COROUTINE_H */
|
||||
|
Loading…
Reference in New Issue
Block a user