1. 29 Aug, 2014 1 commit
  2. 22 Aug, 2013 1 commit
  3. 26 Jun, 2013 1 commit
  4. 19 Dec, 2012 2 commits
  5. 11 Jun, 2012 3 commits
    • Michael Tokarev's avatar
      rewrite iov_send_recv() and move it to iov.c · 25e5e4c7
      Michael Tokarev authored
      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: default avatarMichael Tokarev <mjt@tls.msk.ru>
      25e5e4c7
    • Michael Tokarev's avatar
      cleanup qemu_co_sendv(), qemu_co_recvv() and friends · 2fc8ae1d
      Michael Tokarev authored
      The same as for non-coroutine versions in previous
      patches: rename arguments to be more obvious, change
      type of arguments from int to size_t where appropriate,
      and use common code for send and receive paths (with
      one extra argument) since these are exactly the same.
      Use common iov_send_recv() directly.
      
      qemu_co_sendv(), qemu_co_recvv(), and qemu_co_recv()
      are now trivial #define's merely adding one extra arg.
      
      qemu_co_sendv() and qemu_co_recvv() callers are
      converted to different argument order and extra
      `iov_cnt' argument.
      Signed-off-by: default avatarMichael Tokarev <mjt@tls.msk.ru>
      2fc8ae1d
    • Michael Tokarev's avatar
      rename qemu_sendv to iov_send, change proto and move declarations to iov.h · 3e80bf93
      Michael Tokarev authored
      Rename arguments and use size_t for sizes instead of int,
      from
       int
       qemu_sendv(int sockfd, struct iovec *iov,
                  int len, int iov_offset)
      to
       ssize_t
       iov_send(int sockfd, struct iovec *iov,
                size_t offset, size_t bytes)
      
      The main motivation was to make it clear that length
      and offset are in _bytes_, not in iov elements: it was
      very confusing before, because all standard functions
      which deals with iovecs expects number of iovs, not
      bytes, even the fact that struct iovec has iov_len and
      iov_ prefix does not help.  With "bytes" and "offset",
      especially since they're now size_t, it is much more
      explicit.  Also change the return type to be ssize_t
      instead of int.
      
      This also changes it to match other iov-related functons,
      but not _quite_: there's still no argument indicating
      where iovec ends, ie, no iov_cnt parameter as used
      in iov_size() and friends.  If will be added in subsequent
      patch/rewrite.
      
      All callers of qemu_sendv() and qemu_recvv() and
      related, like qemu_co_sendv() and qemu_co_recvv(),
      were checked to verify that it is safe to use unsigned
      datatype instead of int.
      
      Note that the order of arguments is changed to: offset
      and bytes (len and iov_offset) are swapped with each
      other.  This is to make them consistent with very similar
      functions from qemu_iovec family, where offset always
      follows qiov, to mean the place in it to start from.
      Signed-off-by: default avatarMichael Tokarev <mjt@tls.msk.ru>
      3e80bf93
  6. 22 Dec, 2011 1 commit