summaryrefslogtreecommitdiffstats
path: root/libnetdutils/Syscalls.cpp
diff options
context:
space:
mode:
authorludi <ludi@google.com>2017-06-15 08:56:52 -0700
committerludi <ludi@google.com>2017-08-11 13:41:44 -0700
commit4072ff2d7c3e0118a2cd2190fd8fe91a521aeae0 (patch)
treea77f52f6a37ad671bdeccc48c4b662c3be8da116 /libnetdutils/Syscalls.cpp
parent77b1698e59fbdbf9dc6ab7cab3e11498dc6a3e7f (diff)
downloadplatform_system_netd-4072ff2d7c3e0118a2cd2190fd8fe91a521aeae0.tar.gz
platform_system_netd-4072ff2d7c3e0118a2cd2190fd8fe91a521aeae0.tar.bz2
platform_system_netd-4072ff2d7c3e0118a2cd2190fd8fe91a521aeae0.zip
Add Syscalls wrapper for writev() and use in XfrmController
Bug:62618292 Test: runtest -x tests/netd_integration_test.cpp Change-Id: I743c3867aed62d099de6d80bed89e02e11bac5fc
Diffstat (limited to 'libnetdutils/Syscalls.cpp')
-rw-r--r--libnetdutils/Syscalls.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/libnetdutils/Syscalls.cpp b/libnetdutils/Syscalls.cpp
index 00e2422a6..b0301d281 100644
--- a/libnetdutils/Syscalls.cpp
+++ b/libnetdutils/Syscalls.cpp
@@ -109,6 +109,14 @@ class RealSyscalls final : public Syscalls {
return rv;
}
+ StatusOr<size_t> writev(Fd fd, const std::vector<iovec>& iov) const override {
+ auto rv = syscallRetry(::writev, fd.get(), iov.data(), iov.size());
+ if (rv == -1) {
+ return statusFromErrno(errno, "writev() failed");
+ }
+ return rv;
+ }
+
StatusOr<size_t> write(Fd fd, const Slice buf) const override {
auto rv = syscallRetry(::write, fd.get(), buf.base(), buf.size());
if (rv == -1) {