| Index: mojo/system/raw_channel_posix.cc
|
| diff --git a/mojo/system/raw_channel_posix.cc b/mojo/system/raw_channel_posix.cc
|
| index 754b4a49ec8385f904c8e2cbf981cf51183d0636..2b1a3582f86e439979635ff64fc9e3f30701daab 100644
|
| --- a/mojo/system/raw_channel_posix.cc
|
| +++ b/mojo/system/raw_channel_posix.cc
|
| @@ -5,8 +5,6 @@
|
| #include "mojo/system/raw_channel.h"
|
|
|
| #include <errno.h>
|
| -#include <sys/socket.h>
|
| -#include <sys/types.h>
|
| #include <sys/uio.h>
|
| #include <unistd.h>
|
|
|
| @@ -22,7 +20,7 @@
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/posix/eintr_wrapper.h"
|
| #include "base/synchronization/lock.h"
|
| -#include "build/build_config.h"
|
| +#include "mojo/embedder/platform_channel_utils_posix.h"
|
| #include "mojo/embedder/platform_handle.h"
|
|
|
| namespace mojo {
|
| @@ -145,8 +143,8 @@ RawChannel::IOResult RawChannelPosix::WriteNoLock(size_t* bytes_written) {
|
|
|
| ssize_t write_result = -1;
|
| if (buffers.size() == 1) {
|
| - write_result = HANDLE_EINTR(
|
| - write(fd_.get().fd, buffers[0].addr, buffers[0].size));
|
| + write_result = embedder::PlatformChannelWrite(fd_.get(), buffers[0].addr,
|
| + buffers[0].size);
|
| } else {
|
| // Note that using |writev()|/|sendmsg()| is measurably slower than using
|
| // |write()| -- at least in a microbenchmark -- but much faster than using
|
| @@ -166,20 +164,8 @@ RawChannel::IOResult RawChannelPosix::WriteNoLock(size_t* bytes_written) {
|
| iov[i].iov_len = buffers[i].size;
|
| }
|
|
|
| - // On Mac, we can use |writev()|, which is slightly faster, but on Linux we
|
| - // need to use |sendmsg()|. See comment above.
|
| - // TODO(vtl): We should have an actual test that |SIGPIPE| is suppressed for
|
| - // |RawChannelPosix|, since it has to be suppressed at "use" time on Linux.
|
| - // Or maybe I should abstract out |write()|/|send()| and
|
| - // |writev()|/|sendmsg()|. crbug.com/356195
|
| -#if defined(OS_MACOSX)
|
| - write_result = HANDLE_EINTR(writev(fd_.get().fd, iov, buffer_count));
|
| -#else
|
| - struct msghdr msg = {};
|
| - msg.msg_iov = iov;
|
| - msg.msg_iovlen = buffer_count;
|
| - write_result = HANDLE_EINTR(sendmsg(fd_.get().fd, &msg, MSG_NOSIGNAL));
|
| -#endif
|
| + write_result = embedder::PlatformChannelWritev(fd_.get(), iov,
|
| + buffer_count);
|
| }
|
|
|
| if (write_result >= 0) {
|
|
|