diff options
author | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-12 17:36:55 +0000 |
---|---|---|
committer | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-12 17:36:55 +0000 |
commit | cc8f146d34a3b13cd80d8b3530fd76445774b1c6 (patch) | |
tree | 65ddd346a7b468f716f0022507112ec7215a17f7 /base/global_descriptors_posix.cc | |
parent | 9ab7d838fba71523a32d1b1e50e5d9a1c20815b2 (diff) | |
download | chromium_src-cc8f146d34a3b13cd80d8b3530fd76445774b1c6.zip chromium_src-cc8f146d34a3b13cd80d8b3530fd76445774b1c6.tar.gz chromium_src-cc8f146d34a3b13cd80d8b3530fd76445774b1c6.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
(This is a reland. First landed in r18109, reverted in r18112.)
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18291 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/global_descriptors_posix.cc')
-rw-r--r-- | base/global_descriptors_posix.cc | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/base/global_descriptors_posix.cc b/base/global_descriptors_posix.cc new file mode 100644 index 0000000..869d196 --- /dev/null +++ b/base/global_descriptors_posix.cc @@ -0,0 +1,46 @@ +// 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. + +#include "base/global_descriptors_posix.h" + +#include <vector> +#include <utility> + +#include "base/logging.h" + +namespace base { + +int GlobalDescriptors::MaybeGet(Key key) const { + for (Mapping::const_iterator + i = descriptors_.begin(); i != descriptors_.end(); ++i) { + if (i->first == key) + return i->second; + } + + // In order to make unittests pass, we define a default mapping from keys to + // descriptors by adding a fixed offset: + return kBaseDescriptor + key; +} + +int GlobalDescriptors::Get(Key key) const { + const int ret = MaybeGet(key); + + if (ret == -1) + LOG(FATAL) << "Unknown global descriptor: " << key; + return ret; +} + +void GlobalDescriptors::Set(Key key, int fd) { + for (Mapping::iterator + i = descriptors_.begin(); i != descriptors_.end(); ++i) { + if (i->first == key) { + i->second = fd; + return; + } + } + + descriptors_.push_back(std::make_pair(key, fd)); +} + +} // namespace base |