| Index: base/process_util_posix.cc
|
| diff --git a/base/process_util_posix.cc b/base/process_util_posix.cc
|
| index 52e964bca1c48cd27bbb70ce098c92be95449b99..98ec183b8d67eabe43167406e0dcb9270a0091a6 100644
|
| --- a/base/process_util_posix.cc
|
| +++ b/base/process_util_posix.cc
|
| @@ -604,15 +604,6 @@ bool LaunchProcess(const std::vector<std::string>& argv,
|
| fd_shuffle_size = options.fds_to_remap->size();
|
| }
|
|
|
| -#if defined(OS_MACOSX)
|
| - if (options.synchronize) {
|
| - // When synchronizing, the "read" end of the synchronization pipe needs
|
| - // to make it to the child process. This is handled by mapping it back to
|
| - // itself.
|
| - ++fd_shuffle_size;
|
| - }
|
| -#endif // defined(OS_MACOSX)
|
| -
|
| InjectiveMultimap fd_shuffle1;
|
| InjectiveMultimap fd_shuffle2;
|
| fd_shuffle1.reserve(fd_shuffle_size);
|
| @@ -623,34 +614,6 @@ bool LaunchProcess(const std::vector<std::string>& argv,
|
| if (options.environ)
|
| new_environ.reset(AlterEnvironment(*options.environ, GetEnvironment()));
|
|
|
| -#if defined(OS_MACOSX)
|
| - int synchronization_pipe_fds[2];
|
| - file_util::ScopedFD synchronization_read_fd;
|
| - file_util::ScopedFD synchronization_write_fd;
|
| -
|
| - if (options.synchronize) {
|
| - // wait means "don't return from LaunchProcess until the child exits", and
|
| - // synchronize means "return from LaunchProcess but don't let the child
|
| - // run until LaunchSynchronize is called". These two options are highly
|
| - // incompatible.
|
| - DCHECK(!options.wait);
|
| -
|
| - // Create the pipe used for synchronization.
|
| - if (HANDLE_EINTR(pipe(synchronization_pipe_fds)) != 0) {
|
| - DPLOG(ERROR) << "pipe";
|
| - return false;
|
| - }
|
| -
|
| - // The parent process will only use synchronization_write_fd as the write
|
| - // side of the pipe. It can close the read side as soon as the child
|
| - // process has forked off. The child process will only use
|
| - // synchronization_read_fd as the read side of the pipe. In that process,
|
| - // the write side can be closed as soon as it has forked.
|
| - synchronization_read_fd.reset(&synchronization_pipe_fds[0]);
|
| - synchronization_write_fd.reset(&synchronization_pipe_fds[1]);
|
| - }
|
| -#endif // OS_MACOSX
|
| -
|
| pid_t pid;
|
| #if defined(OS_LINUX)
|
| if (options.clone_flags) {
|
| @@ -743,13 +706,6 @@ bool LaunchProcess(const std::vector<std::string>& argv,
|
| RAW_LOG(INFO, "Right after signal/exception handler restoration.");
|
| }
|
|
|
| -#if defined(OS_MACOSX)
|
| - if (options.synchronize) {
|
| - // The "write" side of the synchronization pipe belongs to the parent.
|
| - synchronization_write_fd.reset(); // closes synchronization_pipe_fds[1]
|
| - }
|
| -#endif // defined(OS_MACOSX)
|
| -
|
| #if 0
|
| // When debugging it can be helpful to check that we really aren't making
|
| // any hidden calls to malloc.
|
| @@ -789,16 +745,6 @@ bool LaunchProcess(const std::vector<std::string>& argv,
|
| RAW_LOG(INFO, "Right after fd_shuffle push_backs.");
|
| }
|
|
|
| -#if defined(OS_MACOSX)
|
| - if (options.synchronize) {
|
| - // Remap the read side of the synchronization pipe back onto itself,
|
| - // ensuring that it won't be closed by CloseSuperfluousFds.
|
| - int keep_fd = *synchronization_read_fd.get();
|
| - fd_shuffle1.push_back(InjectionArc(keep_fd, keep_fd, false));
|
| - fd_shuffle2.push_back(InjectionArc(keep_fd, keep_fd, false));
|
| - }
|
| -#endif // defined(OS_MACOSX)
|
| -
|
| if (options.environ)
|
| SetEnvironment(new_environ.get());
|
|
|
| @@ -816,24 +762,6 @@ bool LaunchProcess(const std::vector<std::string>& argv,
|
| RAW_LOG(INFO, "Right after CloseSuperfluousFds");
|
| }
|
|
|
| -#if defined(OS_MACOSX)
|
| - if (options.synchronize) {
|
| - // Do a blocking read to wait until the parent says it's OK to proceed.
|
| - // The byte that's read here is written by LaunchSynchronize.
|
| - char read_char;
|
| - int read_result =
|
| - HANDLE_EINTR(read(*synchronization_read_fd.get(), &read_char, 1));
|
| - if (read_result != 1) {
|
| - RAW_LOG(ERROR, "LaunchProcess: synchronization read: error");
|
| - _exit(127);
|
| - }
|
| -
|
| - // The pipe is no longer useful. Don't let it live on in the new process
|
| - // after exec.
|
| - synchronization_read_fd.reset(); // closes synchronization_pipe_fds[0]
|
| - }
|
| -#endif // defined(OS_MACOSX)
|
| -
|
| if (options.debug) {
|
| RAW_LOG(INFO, "Right before execvp");
|
| }
|
| @@ -858,14 +786,6 @@ bool LaunchProcess(const std::vector<std::string>& argv,
|
|
|
| if (process_handle)
|
| *process_handle = pid;
|
| -
|
| -#if defined(OS_MACOSX)
|
| - if (options.synchronize) {
|
| - // The "read" side of the synchronization pipe belongs to the child.
|
| - synchronization_read_fd.reset(); // closes synchronization_pipe_fds[0]
|
| - *options.synchronize = new int(*synchronization_write_fd.release());
|
| - }
|
| -#endif // defined(OS_MACOSX)
|
| }
|
|
|
| return true;
|
| @@ -878,19 +798,6 @@ bool LaunchProcess(const CommandLine& cmdline,
|
| return LaunchProcess(cmdline.argv(), options, process_handle);
|
| }
|
|
|
| -#if defined(OS_MACOSX)
|
| -void LaunchSynchronize(LaunchSynchronizationHandle handle) {
|
| - int synchronization_fd = *handle;
|
| - file_util::ScopedFD synchronization_fd_closer(&synchronization_fd);
|
| - delete handle;
|
| -
|
| - // Write a '\0' character to the pipe.
|
| - if (HANDLE_EINTR(write(synchronization_fd, "", 1)) != 1) {
|
| - DPLOG(ERROR) << "write";
|
| - }
|
| -}
|
| -#endif // defined(OS_MACOSX)
|
| -
|
| ProcessMetrics::~ProcessMetrics() { }
|
|
|
| void RaiseProcessToHighPriority() {
|
|
|