mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
rewrite iov_send_recv() and move it to iov.c
Make it much more understandable, add a missing iov_cnt argument (number of iovs in the iov), and add comments to it. The new implementation has been extensively tested by splitting a large buffer into many small randomly-sized chunks, sending it over socket to another, slow process and verifying the receiving data is the same. Also add a unit test for iov_send_recv(), sending/ receiving data between two processes over a socketpair using random vectors and random sizes. Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
parent
2fc8ae1dd7
commit
25e5e4c7e9
5 changed files with 220 additions and 90 deletions
|
@ -34,7 +34,7 @@ qemu_co_sendv_recvv(int sockfd, struct iovec *iov, unsigned iov_cnt,
|
|||
size_t done = 0;
|
||||
ssize_t ret;
|
||||
while (done < bytes) {
|
||||
ret = iov_send_recv(sockfd, iov,
|
||||
ret = iov_send_recv(sockfd, iov, iov_cnt,
|
||||
offset + done, bytes - done, do_send);
|
||||
if (ret > 0) {
|
||||
done += ret;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue