Spdk/lib/util
Ben Walker c802adc776 util: Add spdk_ioviter for iterating iovecs
spdk_ioviter_next will walk through two iovecs and yield pointers
to common length segments. For example, given a source iovec (siov) with
4 1KiB elements and a destination iovec (diov) with 1 4KiB element, the
following will happen:

first spdk_ioviter_next:

src = siov[0].iov_base
dst = diov[0].iov_base
len = 1KiB

second spdk_ioviter_next:

src = siov[1].iov_base
dst = diov[0].iov_base + 1KiB
len = 1KiB

third spdk_ioviter_next:

src = siov[2].iov_base
dst = diov[0].iov_base + 2KiB
len = 1KiB

fourth spdk_ioviter_next:

src = siov[3].iov_base
dst = diov[0].iov_base + 3KiB
len = 1KiB

fifth spdk_ioviter_next:

len = 0

This is a useful utility for performing operations where both the source
and destination are scattered memory. As an example and a test vehicle,
spdk_iovcpy has been updated to use this internally.

Change-Id: I7e35e76d38e78d07ea1caf6282d0dfc02182aa83
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10284
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2022-06-30 13:32:29 -04:00
..
base64_neon.c
base64_sve.c lib/util: optimize base64 encode and decode using ARM SVE intrinsics 2021-08-06 07:31:06 +00:00
base64.c spelling: lib 2022-06-30 13:32:28 -04:00
bit_array.c util: add spdk_bit_pool 2020-09-15 07:12:44 +00:00
cpuset.c
crc16.c
crc32_ieee.c
crc32.c
crc32c.c util/crc32c: Add spdk_crc32c_iov_update. 2021-06-02 11:37:17 +00:00
dif.c util: Add macro SPDK_SIZEOF_MEMBER to get size of a member of a struct 2021-07-15 07:16:22 +00:00
fd_group.c add name to fd groups 2022-06-30 13:32:25 -04:00
fd.c
file.c
iov.c util: Add spdk_ioviter for iterating iovecs 2022-06-30 13:32:29 -04:00
Makefile util: Add spdk_ioviter for iterating iovecs 2022-06-30 13:32:29 -04:00
math.c lib/util/math.c: improve portability 2021-02-10 08:44:01 +00:00
pipe.c
spdk_util.map util: Add spdk_ioviter for iterating iovecs 2022-06-30 13:32:29 -04:00
strerror_tls.c
string.c
util_internal.h
uuid.c
zipf.c util: add zipf random number generator 2021-05-17 11:29:52 +00:00