| Index: content/browser/zygote_host_impl_linux.cc
|
| ===================================================================
|
| --- content/browser/zygote_host_impl_linux.cc (revision 123506)
|
| +++ content/browser/zygote_host_impl_linux.cc (working copy)
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "content/browser/zygote_host_linux.h"
|
| +#include "content/browser/zygote_host_impl_linux.h"
|
|
|
| #include <sys/socket.h>
|
| #include <sys/stat.h>
|
| @@ -58,7 +58,12 @@
|
| }
|
| }
|
|
|
| -ZygoteHost::ZygoteHost()
|
| +// static
|
| +content::ZygoteHost* content::ZygoteHost::GetInstance() {
|
| + return ZygoteHostImpl::GetInstance();
|
| +}
|
| +
|
| +ZygoteHostImpl::ZygoteHostImpl()
|
| : control_fd_(-1),
|
| pid_(-1),
|
| init_(false),
|
| @@ -66,17 +71,17 @@
|
| have_read_sandbox_status_word_(false),
|
| sandbox_status_(0) {}
|
|
|
| -ZygoteHost::~ZygoteHost() {
|
| +ZygoteHostImpl::~ZygoteHostImpl() {
|
| if (init_)
|
| close(control_fd_);
|
| }
|
|
|
| // static
|
| -ZygoteHost* ZygoteHost::GetInstance() {
|
| - return Singleton<ZygoteHost>::get();
|
| +ZygoteHostImpl* ZygoteHostImpl::GetInstance() {
|
| + return Singleton<ZygoteHostImpl>::get();
|
| }
|
|
|
| -void ZygoteHost::Init(const std::string& sandbox_cmd) {
|
| +void ZygoteHostImpl::Init(const std::string& sandbox_cmd) {
|
| DCHECK(!init_);
|
| init_ = true;
|
|
|
| @@ -221,7 +226,7 @@
|
| // We don't wait for the reply. We'll read it in ReadReply.
|
| }
|
|
|
| -ssize_t ZygoteHost::ReadReply(void* buf, size_t buf_len) {
|
| +ssize_t ZygoteHostImpl::ReadReply(void* buf, size_t buf_len) {
|
| // At startup we send a kCmdGetSandboxStatus request to the zygote, but don't
|
| // wait for the reply. Thus, the first time that we read from the zygote, we
|
| // get the reply to that request.
|
| @@ -237,7 +242,7 @@
|
| return HANDLE_EINTR(read(control_fd_, buf, buf_len));
|
| }
|
|
|
| -pid_t ZygoteHost::ForkRequest(
|
| +pid_t ZygoteHostImpl::ForkRequest(
|
| const std::vector<std::string>& argv,
|
| const base::GlobalDescriptors::Mapping& mapping,
|
| const std::string& process_type) {
|
| @@ -319,7 +324,8 @@
|
| }
|
|
|
| #if !defined(OS_OPENBSD)
|
| -void ZygoteHost::AdjustRendererOOMScore(base::ProcessHandle pid, int score) {
|
| +void ZygoteHostImpl::AdjustRendererOOMScore(base::ProcessHandle pid,
|
| + int score) {
|
| // 1) You can't change the oom_score_adj of a non-dumpable process
|
| // (EPERM) unless you're root. Because of this, we can't set the
|
| // oom_adj from the browser process.
|
| @@ -387,7 +393,7 @@
|
| }
|
| #endif
|
|
|
| -void ZygoteHost::EnsureProcessTerminated(pid_t process) {
|
| +void ZygoteHostImpl::EnsureProcessTerminated(pid_t process) {
|
| DCHECK(init_);
|
| Pickle pickle;
|
|
|
| @@ -398,7 +404,7 @@
|
| PLOG(ERROR) << "write";
|
| }
|
|
|
| -base::TerminationStatus ZygoteHost::GetTerminationStatus(
|
| +base::TerminationStatus ZygoteHostImpl::GetTerminationStatus(
|
| base::ProcessHandle handle,
|
| int* exit_code) {
|
| DCHECK(init_);
|
| @@ -443,3 +449,13 @@
|
|
|
| return static_cast<base::TerminationStatus>(status);
|
| }
|
| +
|
| +pid_t ZygoteHostImpl::GetPid() const {
|
| + return pid_;
|
| +}
|
| +
|
| +int ZygoteHostImpl::GetSandboxStatus() const {
|
| + if (have_read_sandbox_status_word_)
|
| + return sandbox_status_;
|
| + return 0;
|
| +}
|
|
|