On Thu, Feb 29, 2024 at 09:10:02AM +0100, Stefano Brivio wrote: > On Wed, 28 Feb 2024 12:52:01 +1100 > David Gibson wrote: > > > Several of the IOV functions in iov.c, and also tap_send_frames_passt() > > needs to determine which buffer element a byte offset into an IO vector > > lies in. Split this out into a helper function iov_skip_bytes(). > > > > Signed-off-by: David Gibson > > --- > > iov.c | 42 +++++++++++++++++++++++++++++++++--------- > > iov.h | 2 ++ > > tap.c | 12 +++++------- > > 3 files changed, 40 insertions(+), 16 deletions(-) > > > > diff --git a/iov.c b/iov.c > > index 8a48acb1..e3312628 100644 > > --- a/iov.c > > +++ b/iov.c > > @@ -25,6 +25,36 @@ > > #include "util.h" > > #include "iov.h" > > > > + > > +/* iov_skip_bytes() - Skip the first n bytes into an IO vector > > + * @iov: IO vector > > + * @n: Number of entries in @iov > > ...which is a different 'n' compared to two lines above. Ouch, good point. > > + * @vec_offset: Total byte offset into the IO vector > > This doesn't clearly correlate with the description of the function > ("first n bytes"). > > Same here, I have no other comments about the series, so I'll > apply this and try to improve this a bit as a follow-up. Ok, thanks. I might see if I can improve this one too. > > > + * @buf_offset: Offset into a single buffer of the IO vector > > + * > > + * Return: index I of individual struct iovec which contains the byte at > > + * @vec_offset bytes into the vector (as though all its buffers were > > + * contiguous). If @buf_offset is non-NULL, update it to the offset of > > + * that byte within @iov[I] (guaranteed to be less than @iov[I].iov_len) > > + * If the whole vector has <= @vec_offset bytes, return @n. > > + */ > > +size_t iov_skip_bytes(const struct iovec *iov, size_t n, > > + size_t vec_offset, size_t *buf_offset) > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson