8639940e48
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
47 linhas
1.1 KiB
C++
47 linhas
1.1 KiB
C++
// 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
|