diff options
| author | 2009-03-03 19:31:44 -0800 | |
|---|---|---|
| committer | 2009-03-03 19:31:44 -0800 | |
| commit | 9066cfe9886ac131c34d59ed0e2d287b0e3c0087 (patch) | |
| tree | d88beb88001f2482911e3d28e43833b50e4b4e97 /libs/utils/Static.cpp | |
| parent | d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (diff) | |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'libs/utils/Static.cpp')
| -rw-r--r-- | libs/utils/Static.cpp | 120 | 
1 files changed, 120 insertions, 0 deletions
diff --git a/libs/utils/Static.cpp b/libs/utils/Static.cpp new file mode 100644 index 000000000000..93f7e4f0c476 --- /dev/null +++ b/libs/utils/Static.cpp @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + *      http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// All static variables go here, to control initialization and +// destruction order in the library. + +#include <private/utils/Static.h> + +#include <utils/BufferedTextOutput.h> +#include <utils/IPCThreadState.h> +#include <utils/Log.h> + +namespace android { + +class LibUtilsFirstStatics +{ +public: +    LibUtilsFirstStatics() +    { +        initialize_string8(); +        initialize_string16(); +    } +     +    ~LibUtilsFirstStatics() +    { +        terminate_string16(); +        terminate_string8(); +    } +}; + +static LibUtilsFirstStatics gFirstStatics; +int gDarwinCantLoadAllObjects = 1; + +// ------------ Text output streams + +Vector<int32_t> gTextBuffers; + +class LogTextOutput : public BufferedTextOutput +{ +public: +    LogTextOutput() : BufferedTextOutput(MULTITHREADED) { } +    virtual ~LogTextOutput() { }; + +protected: +    virtual status_t writeLines(const struct iovec& vec, size_t N) +    { +        android_writevLog(&vec, N); +        return NO_ERROR; +    } +}; + +class FdTextOutput : public BufferedTextOutput +{ +public: +    FdTextOutput(int fd) : BufferedTextOutput(MULTITHREADED), mFD(fd) { } +    virtual ~FdTextOutput() { }; + +protected: +    virtual status_t writeLines(const struct iovec& vec, size_t N) +    { +        writev(mFD, &vec, N); +        return NO_ERROR; +    } + +private: +    int mFD; +}; + +static LogTextOutput gLogTextOutput; +static FdTextOutput gStdoutTextOutput(STDOUT_FILENO); +static FdTextOutput gStderrTextOutput(STDERR_FILENO); + +TextOutput& alog(gLogTextOutput); +TextOutput& aout(gStdoutTextOutput); +TextOutput& aerr(gStderrTextOutput); + +#ifndef LIBUTILS_NATIVE + +// ------------ ProcessState.cpp + +Mutex gProcessMutex; +sp<ProcessState> gProcess; + +class LibUtilsIPCtStatics +{ +public: +    LibUtilsIPCtStatics() +    { +    } +     +    ~LibUtilsIPCtStatics() +    { +        IPCThreadState::shutdown(); +    } +}; + +static LibUtilsIPCtStatics gIPCStatics; + +// ------------ ServiceManager.cpp + +Mutex gDefaultServiceManagerLock; +sp<IServiceManager> gDefaultServiceManager; +sp<IPermissionController> gPermissionController; + +#endif + +}   // namespace android  |