diff options
author | Josh Gao <jmgao@google.com> | 2016-09-13 14:57:12 -0700 |
---|---|---|
committer | Josh Gao <jmgao@google.com> | 2016-09-13 15:59:46 -0700 |
commit | 63bdcb57aad34808c806fc31560b3d56834f6bb7 (patch) | |
tree | 4f887f81f27ba0965769ff00cea3da150420564c /base/logging.cpp | |
parent | de029a894ae781858b0484840d5c7ba9b3cf3200 (diff) | |
download | system_core-63bdcb57aad34808c806fc31560b3d56834f6bb7.tar.gz system_core-63bdcb57aad34808c806fc31560b3d56834f6bb7.tar.bz2 system_core-63bdcb57aad34808c806fc31560b3d56834f6bb7.zip |
base: extract mutex.h from logging.cpp.
Extract the Windows-specific mutex implementation from logging.cpp.
Bug: http://b/31468413
Change-Id: I0a895911ec6d815b8011b09d55209b64bbf9a70e
Test: mma
Diffstat (limited to 'base/logging.cpp')
-rw-r--r-- | base/logging.cpp | 60 |
1 files changed, 7 insertions, 53 deletions
diff --git a/base/logging.cpp b/base/logging.cpp index 6e1dd9ca3..33313e4a6 100644 --- a/base/logging.cpp +++ b/base/logging.cpp @@ -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. @@ -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] = {}; @@ -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()); @@ -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); } @@ -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()); |