Loading base/include/android-base/mutex.h 0 → 100644 +49 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 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. */ #pragma once #include <mutex> #include "android-base/macros.h" #if defined(_WIN32) #include <windows.h> namespace std { class mutex { public: mutex() { InitializeCriticalSection(&critical_section_); } ~mutex() { DeleteCriticalSection(&critical_section_); } void lock() { EnterCriticalSection(&critical_section_); } void unlock() { LeaveCriticalSection(&critical_section_); } private: CRITICAL_SECTION critical_section_; DISALLOW_COPY_AND_ASSIGN(mutex); }; } // namespace std #endif base/logging.cpp +7 −53 Original line number Diff line number Diff line Loading @@ -37,16 +37,14 @@ #include <iostream> #include <limits> #include <mutex> #include <sstream> #include <string> #include <utility> #include <vector> #ifndef _WIN32 #include <mutex> #endif #include "android-base/macros.h" #include "android-base/mutex.h" #include "android-base/strings.h" // Headers for LogMessage::LogLine. Loading Loading @@ -92,17 +90,11 @@ static thread_id GetThreadId() { } namespace { #ifndef _WIN32 using std::mutex; using std::lock_guard; #if defined(__GLIBC__) const char* getprogname() { return program_invocation_short_name; } #endif #else #elif defined(_WIN32) const char* getprogname() { static bool first = true; static char progname[MAX_PATH] = {}; Loading @@ -121,51 +113,13 @@ const char* getprogname() { return progname; } class mutex { public: mutex() { InitializeCriticalSection(&critical_section_); } ~mutex() { DeleteCriticalSection(&critical_section_); } void lock() { EnterCriticalSection(&critical_section_); } void unlock() { LeaveCriticalSection(&critical_section_); } private: CRITICAL_SECTION critical_section_; }; template <typename LockT> class lock_guard { public: explicit lock_guard(LockT& lock) : lock_(lock) { lock_.lock(); } ~lock_guard() { lock_.unlock(); } private: LockT& lock_; DISALLOW_COPY_AND_ASSIGN(lock_guard); }; #endif } // namespace namespace android { namespace base { static auto& logging_lock = *new mutex(); static auto& logging_lock = *new std::mutex(); #ifdef __ANDROID__ static auto& gLogger = *new LogFunction(LogdLogger()); Loading Loading @@ -354,12 +308,12 @@ void InitLogging(char* argv[], LogFunction&& logger, AbortFunction&& aborter) { } void SetLogger(LogFunction&& logger) { lock_guard<mutex> lock(logging_lock); std::lock_guard<std::mutex> lock(logging_lock); gLogger = std::move(logger); } void SetAborter(AbortFunction&& aborter) { lock_guard<mutex> lock(logging_lock); std::lock_guard<std::mutex> lock(logging_lock); gAborter = std::move(aborter); } Loading Loading @@ -445,7 +399,7 @@ LogMessage::~LogMessage() { { // Do the actual logging with the lock held. lock_guard<mutex> lock(logging_lock); std::lock_guard<std::mutex> lock(logging_lock); if (msg.find('\n') == std::string::npos) { LogLine(data_->GetFile(), data_->GetLineNumber(), data_->GetId(), data_->GetSeverity(), msg.c_str()); Loading Loading
base/include/android-base/mutex.h 0 → 100644 +49 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 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. */ #pragma once #include <mutex> #include "android-base/macros.h" #if defined(_WIN32) #include <windows.h> namespace std { class mutex { public: mutex() { InitializeCriticalSection(&critical_section_); } ~mutex() { DeleteCriticalSection(&critical_section_); } void lock() { EnterCriticalSection(&critical_section_); } void unlock() { LeaveCriticalSection(&critical_section_); } private: CRITICAL_SECTION critical_section_; DISALLOW_COPY_AND_ASSIGN(mutex); }; } // namespace std #endif
base/logging.cpp +7 −53 Original line number Diff line number Diff line Loading @@ -37,16 +37,14 @@ #include <iostream> #include <limits> #include <mutex> #include <sstream> #include <string> #include <utility> #include <vector> #ifndef _WIN32 #include <mutex> #endif #include "android-base/macros.h" #include "android-base/mutex.h" #include "android-base/strings.h" // Headers for LogMessage::LogLine. Loading Loading @@ -92,17 +90,11 @@ static thread_id GetThreadId() { } namespace { #ifndef _WIN32 using std::mutex; using std::lock_guard; #if defined(__GLIBC__) const char* getprogname() { return program_invocation_short_name; } #endif #else #elif defined(_WIN32) const char* getprogname() { static bool first = true; static char progname[MAX_PATH] = {}; Loading @@ -121,51 +113,13 @@ const char* getprogname() { return progname; } class mutex { public: mutex() { InitializeCriticalSection(&critical_section_); } ~mutex() { DeleteCriticalSection(&critical_section_); } void lock() { EnterCriticalSection(&critical_section_); } void unlock() { LeaveCriticalSection(&critical_section_); } private: CRITICAL_SECTION critical_section_; }; template <typename LockT> class lock_guard { public: explicit lock_guard(LockT& lock) : lock_(lock) { lock_.lock(); } ~lock_guard() { lock_.unlock(); } private: LockT& lock_; DISALLOW_COPY_AND_ASSIGN(lock_guard); }; #endif } // namespace namespace android { namespace base { static auto& logging_lock = *new mutex(); static auto& logging_lock = *new std::mutex(); #ifdef __ANDROID__ static auto& gLogger = *new LogFunction(LogdLogger()); Loading Loading @@ -354,12 +308,12 @@ void InitLogging(char* argv[], LogFunction&& logger, AbortFunction&& aborter) { } void SetLogger(LogFunction&& logger) { lock_guard<mutex> lock(logging_lock); std::lock_guard<std::mutex> lock(logging_lock); gLogger = std::move(logger); } void SetAborter(AbortFunction&& aborter) { lock_guard<mutex> lock(logging_lock); std::lock_guard<std::mutex> lock(logging_lock); gAborter = std::move(aborter); } Loading Loading @@ -445,7 +399,7 @@ LogMessage::~LogMessage() { { // Do the actual logging with the lock held. lock_guard<mutex> lock(logging_lock); std::lock_guard<std::mutex> lock(logging_lock); if (msg.find('\n') == std::string::npos) { LogLine(data_->GetFile(), data_->GetLineNumber(), data_->GetId(), data_->GetSeverity(), msg.c_str()); Loading