diff options
author | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-10 23:28:46 +0000 |
---|---|---|
committer | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-10 23:28:46 +0000 |
commit | ac577490a5c20950f63d655de37058dc41486e99 (patch) | |
tree | e5a53f6cad3317c2451f8ef39bf0b19bd8706e79 /base/global_descriptors_posix.h | |
parent | 0f1169993f28f8da9be5a81496fb2e2abf311387 (diff) | |
download | chromium_src-ac577490a5c20950f63d655de37058dc41486e99.zip chromium_src-ac577490a5c20950f63d655de37058dc41486e99.tar.gz chromium_src-ac577490a5c20950f63d655de37058dc41486e99.tar.bz2 |
Revert 18109, 18111: Windows UI tests failed.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18112 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/global_descriptors_posix.h')
-rw-r--r-- | base/global_descriptors_posix.h | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/base/global_descriptors_posix.h b/base/global_descriptors_posix.h deleted file mode 100644 index f606a82..0000000 --- a/base/global_descriptors_posix.h +++ /dev/null @@ -1,66 +0,0 @@ -// 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 BASE_GLOBAL_DESCRIPTORS_POSIX_H_ -#define BASE_GLOBAL_DESCRIPTORS_POSIX_H_ - -#include "build/build_config.h" - -#include <vector> -#include <utility> - -#include <stdint.h> - -#include "base/singleton.h" - -namespace base { - -// It's common practice to install file descriptors into well known slot -// numbers before execing a child; stdin, stdout and stderr are ubiqutous -// examples. -// -// However, when using a zygote model, this becomes troublesome. Since the -// descriptors which need to be in these slots generally aren't known, any code -// could open a resource and take one of the reserved descriptors. Simply -// overwriting the slot isn't a viable solution. -// -// We could try to fill the reserved slots as soon as possible, but this is a -// fragile solution since global constructors etc are able to open files. -// -// Instead, we retreat from the idea of installing descriptors in specific -// slots and add a layer of indirection in the form of this singleton object. -// It maps from an abstract key to a descriptor. If independent modules each -// need to define keys, then values should be chosen randomly so as not to -// collide. -class GlobalDescriptors { - public: - typedef uint32_t Key; - // Often we want a canonical descriptor for a given Key. In this case, we add - // the following constant to the key value: - static const int kBaseDescriptor = 3; // 0, 1, 2 are already taken. - - // Get a descriptor given a key. It is a fatal error if the key is not known. - int Get(Key key) const; - // Get a descriptor give a key. Returns -1 on error. - int MaybeGet(Key key) const; - - typedef std::vector<std::pair<Key, int> > Mapping; - - // Set the descriptor for the given key. - void Set(Key key, int fd); - - void Reset(const Mapping& mapping) { - descriptors_ = mapping; - } - - private: - GlobalDescriptors() { } - friend struct DefaultSingletonTraits<GlobalDescriptors>; - - Mapping descriptors_; -}; - -} // namespace base - -#endif // BASE_GLOBAL_DESCRIPTORS_POSIX_H_ |