From cf59e19e22fc7c4795fd955eeecd1f457d79eba0 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Wed, 13 Oct 2021 18:25:21 -0700 Subject: Add preadv2/pwritev2 wrappers. They're in glibc, though not in musl. Also add basic doc comments to the whole of . Bug: http://b/203002492 Test: treehugger Change-Id: Ic607f7f349e5b7c9bf66c25b7bd68f827da530d6 --- tests/sys_uio_test.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'tests/sys_uio_test.cpp') diff --git a/tests/sys_uio_test.cpp b/tests/sys_uio_test.cpp index 846004148..aac08e764 100644 --- a/tests/sys_uio_test.cpp +++ b/tests/sys_uio_test.cpp @@ -16,7 +16,11 @@ #include +#include +#include +#include #include +#include #include @@ -68,6 +72,42 @@ TEST(sys_uio, preadv64_pwritev64) { TestPreadVPwriteV(preadv64, pwritev64); } +template +void TestPreadV2PwriteV2(ReadFn read_fn, WriteFn write_fn) { + TemporaryFile tf; + + char buf[] = "world"; + iovec ios[] = {{buf, 5}}; + + ASSERT_EQ(5, write_fn(tf.fd, ios, 1, 5, 0)) << strerror(errno); + ASSERT_EQ(0, lseek(tf.fd, 0, SEEK_CUR)); + + strcpy(buf, "hello"); + ASSERT_EQ(5, write_fn(tf.fd, ios, 1, 0, 0)) << strerror(errno); + ASSERT_EQ(0, lseek(tf.fd, 0, SEEK_CUR)); + + ASSERT_EQ(5, read_fn(tf.fd, ios, 1, 5, 0)) << strerror(errno); + ASSERT_STREQ("world", buf); + ASSERT_EQ(5, read_fn(tf.fd, ios, 1, 0, 0)) << strerror(errno); + ASSERT_STREQ("hello", buf); +} + +TEST(sys_uio, preadv2_pwritev2) { +#if defined(__BIONIC__) + TestPreadV2PwriteV2(preadv2, pwritev2); +#else + GTEST_SKIP() << "preadv2/pwritev2 not available"; +#endif +} + +TEST(sys_uio, preadv64v2_pwritev64v2) { +#if defined(__BIONIC__) + TestPreadV2PwriteV2(preadv64v2, pwritev64v2); +#else + GTEST_SKIP() << "preadv2/pwritev2 not available"; +#endif +} + TEST(sys_uio, process_vm_readv) { ASSERT_EQ(0, process_vm_readv(0, nullptr, 0, nullptr, 0, 0)); -- cgit v1.2.3