Il 11/03/2012 02:49, Michael Tokarev ha scritto: > qemu_iovec_concat() is currently a wrapper for qemu_iovec_copy(), > use the former (with extra "0" arg) in a few places where it is used. > > Change skip argument of qemu_iovec_copy() from uint64_t to size_t, > since size of qiov itself is size_t, so there's no way to skip larger > sizes. Rename it to soffset, to make it clear that the offset > is applied to src. > > Also change the only usage of uint64_t in hw/9pfs/virtio-9p.c, in > v9fs_init_qiov_from_pdu() - all callers of it actually uses size_t > too, not uint64_t. > > Semantic change in the meaning of `count' (now renamed to `sbytes') > argument. Initial comment said that src is copied to dst until > _total_ size is less than specified, so it might be interpreted > as maximum size of the _dst_ vector. Actual meaning of if was > that total amount of skipped and copied bytes should not exceed > `count'. Make it just the amount of bytes to _copy_, without > counting skipped bytes. This makes it consistent with other > iovec functions, and also matches actual _usage_ of this function. > > Order of argumens is already good: > qemu_iovec_memset(QEMUIOVector *qiov, size_t offset, int c, size_t bytes) > vs: > qemu_iovec_concat(QEMUIOVector *dst, QEMUIOVector *src, size_t soffset, > size_t sbytes) > (note soffset is after _src_ not dst, since it applies to src; > for memset it applies to qiov). > > Note that in many places where this function is used, the previous > call is qemu_iovec_reset(), which means many callers actually want > copy (replacing dst content), not concat. So we may want to add a > paramere to allow resetting dst in one go.
Yes, this initially left me a bit confused. Let's add a new function qemu_iovec_copy that does reset+concat. Paolo