numam-spdk/lib/util
Ben Walker cd8c36f2fe 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>
2021-12-17 09:45:44 +00:00
..
base64_neon.c lib/util: remove _spdk prefix from functions. 2020-06-01 13:07:30 +00:00
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 2021-12-03 08:12:55 +00:00
bit_array.c util: add spdk_bit_pool 2020-09-15 07:12:44 +00:00
cpuset.c cpuset: fix parse_mask 2020-08-27 08:34:07 +00:00
crc16.c lib/util: remove spdk prefix from static functions. 2020-05-14 10:37:14 +00:00
crc32_ieee.c lib/util: remove spdk prefix from static functions. 2020-05-14 10:37:14 +00:00
crc32.c lib/util: move some crc32 functions to internal header 2020-05-14 10:37:14 +00:00
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 2021-10-07 09:25:48 +00:00
fd.c util/fd: drop fallback from spdk_fd_get_blocklen() 2017-08-11 19:36:30 -04:00
file.c util: add a new file operation API 2019-05-15 18:54:27 +00:00
iov.c util: Add spdk_ioviter for iterating iovecs 2021-12-17 09:45:44 +00:00
Makefile util: Add spdk_ioviter for iterating iovecs 2021-12-17 09:45:44 +00:00
math.c lib/util/math.c: improve portability 2021-02-10 08:44:01 +00:00
pipe.c pipe: Simplify the pipe code 2020-03-31 07:59:26 +00:00
spdk_util.map util: Add spdk_ioviter for iterating iovecs 2021-12-17 09:45:44 +00:00
strerror_tls.c util: add spdk_strerror() wrapper with TLS support 2018-01-04 15:00:09 -05:00
string.c lib/util: fix spdk_strerror() empty string return 2019-07-10 08:29:21 +00:00
util_internal.h lib/util: move some crc32 functions to internal header 2020-05-14 10:37:14 +00:00
uuid.c util/uuid: add a new uuid copy API. 2018-12-06 22:25:09 +00:00
zipf.c util: add zipf random number generator 2021-05-17 11:29:52 +00:00