diff options
author | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-10 23:04:55 +0000 |
---|---|---|
committer | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-10 23:04:55 +0000 |
commit | 361e25c6d29fdae737b5ddf846606093b5502187 (patch) | |
tree | 3114ddee1266088582391d5be9d0ab7aecbd5b8d /chrome/browser/zygote_host_linux.h | |
parent | c6b652b9298b037d8a18dd241061122200019dba (diff) | |
download | chromium_src-361e25c6d29fdae737b5ddf846606093b5502187.zip chromium_src-361e25c6d29fdae737b5ddf846606093b5502187.tar.gz chromium_src-361e25c6d29fdae737b5ddf846606093b5502187.tar.bz2 |
Linux: refactor zygote support
http://code.google.com/p/chromium/wiki/LinuxZygote
* Move Chrome specific bits out of base
* Move away from the idea of reserved file descriptors (which don't
really work with zygotes)
* Load resources before forking renderers (means that we don't need
communication between the zygote process and the renderers)
* Make sure that gdb works against the browser again
* Make sure that we have different ASLR between the renderers and the
browser.
http://codereview.chromium.org/119335
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18109 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/zygote_host_linux.h')
-rw-r--r-- | chrome/browser/zygote_host_linux.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/chrome/browser/zygote_host_linux.h b/chrome/browser/zygote_host_linux.h new file mode 100644 index 0000000..279918d --- /dev/null +++ b/chrome/browser/zygote_host_linux.h @@ -0,0 +1,41 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_ZYGOTE_HOST_LINUX_H_ +#define CHROME_BROWSER_ZYGOTE_HOST_LINUX_H_ + +#include <string> +#include <vector> + +#include "base/global_descriptors_posix.h" +#include "base/singleton.h" + +// http://code.google.com/p/chromium/wiki/LinuxZygote + +// The zygote host is the interface, in the browser process, to the zygote +// process. +class ZygoteHost { + public: + ~ZygoteHost(); + + pid_t ForkRenderer(const std::vector<std::string>& command_line, + const base::GlobalDescriptors::Mapping& mapping); + void EnsureProcessTerminated(pid_t process); + + // These are the command codes used on the wire between the browser and the + // zygote. + enum { + kCmdFork = 0, // Fork off a new renderer. + kCmdReap = 1, // Reap a renderer child. + }; + + private: + friend struct DefaultSingletonTraits<ZygoteHost>; + ZygoteHost(); + void LaunchZygoteProcess(); + + int control_fd_; // the socket to the zygote +}; + +#endif // CHROME_BROWSER_ZYGOTE_HOST_LINUX_H_ |