Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(414)

Unified Diff: webrtc/base/criticalsection.h

Issue 2877023002: Move webrtc/{base => rtc_base} (Closed)
Patch Set: update presubmit.py and DEPS include rules Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/base/crc32_unittest.cc ('k') | webrtc/base/criticalsection.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/base/criticalsection.h
diff --git a/webrtc/base/criticalsection.h b/webrtc/base/criticalsection.h
index d18f24f29ab4c1416c7e85eb84e0c9fc9738eb6b..ab3f542244dc39a052395843ff5bc9b438fd4497 100644
--- a/webrtc/base/criticalsection.h
+++ b/webrtc/base/criticalsection.h
@@ -11,146 +11,8 @@
#ifndef WEBRTC_BASE_CRITICALSECTION_H_
#define WEBRTC_BASE_CRITICALSECTION_H_
-#include "webrtc/base/atomicops.h"
-#include "webrtc/base/checks.h"
-#include "webrtc/base/constructormagic.h"
-#include "webrtc/base/platform_thread_types.h"
-#include "webrtc/base/thread_annotations.h"
-#include "webrtc/typedefs.h"
-
-#if defined(WEBRTC_WIN)
-// Include winsock2.h before including <windows.h> to maintain consistency with
-// win32.h. We can't include win32.h directly here since it pulls in
-// headers such as basictypes.h which causes problems in Chromium where webrtc
-// exists as two separate projects, webrtc and libjingle.
-#include <winsock2.h>
-#include <windows.h>
-#include <sal.h> // must come after windows headers.
-#endif // defined(WEBRTC_WIN)
-
-#if defined(WEBRTC_POSIX)
-#include <pthread.h>
-#endif
-
-// See notes in the 'Performance' unit test for the effects of this flag.
-#define USE_NATIVE_MUTEX_ON_MAC 0
-
-#if defined(WEBRTC_MAC) && !USE_NATIVE_MUTEX_ON_MAC
-#include <dispatch/dispatch.h>
-#endif
-
-#define CS_DEBUG_CHECKS RTC_DCHECK_IS_ON
-
-#if CS_DEBUG_CHECKS
-#define CS_DEBUG_CODE(x) x
-#else // !CS_DEBUG_CHECKS
-#define CS_DEBUG_CODE(x)
-#endif // !CS_DEBUG_CHECKS
-
-namespace rtc {
-
-// Locking methods (Enter, TryEnter, Leave)are const to permit protecting
-// members inside a const context without requiring mutable CriticalSections
-// everywhere.
-class LOCKABLE CriticalSection {
- public:
- CriticalSection();
- ~CriticalSection();
-
- void Enter() const EXCLUSIVE_LOCK_FUNCTION();
- bool TryEnter() const EXCLUSIVE_TRYLOCK_FUNCTION(true);
- void Leave() const UNLOCK_FUNCTION();
-
- private:
- // Use only for RTC_DCHECKing.
- bool CurrentThreadIsOwner() const;
-
-#if defined(WEBRTC_WIN)
- mutable CRITICAL_SECTION crit_;
-#elif defined(WEBRTC_POSIX)
-# if defined(WEBRTC_MAC) && !USE_NATIVE_MUTEX_ON_MAC
- // Number of times the lock has been locked + number of threads waiting.
- // TODO(tommi): We could use this number and subtract the recursion count
- // to find places where we have multiple threads contending on the same lock.
- mutable volatile int lock_queue_;
- // |recursion_| represents the recursion count + 1 for the thread that owns
- // the lock. Only modified by the thread that owns the lock.
- mutable int recursion_;
- // Used to signal a single waiting thread when the lock becomes available.
- mutable dispatch_semaphore_t semaphore_;
- // The thread that currently holds the lock. Required to handle recursion.
- mutable PlatformThreadRef owning_thread_;
-# else
- mutable pthread_mutex_t mutex_;
-# endif
- mutable PlatformThreadRef thread_; // Only used by RTC_DCHECKs.
- mutable int recursion_count_; // Only used by RTC_DCHECKs.
-#else // !defined(WEBRTC_WIN) && !defined(WEBRTC_POSIX)
-# error Unsupported platform.
-#endif
-};
-
-// CritScope, for serializing execution through a scope.
-class SCOPED_LOCKABLE CritScope {
- public:
- explicit CritScope(const CriticalSection* cs) EXCLUSIVE_LOCK_FUNCTION(cs);
- ~CritScope() UNLOCK_FUNCTION();
- private:
- const CriticalSection* const cs_;
- RTC_DISALLOW_COPY_AND_ASSIGN(CritScope);
-};
-
-// Tries to lock a critical section on construction via
-// CriticalSection::TryEnter, and unlocks on destruction if the
-// lock was taken. Never blocks.
-//
-// IMPORTANT: Unlike CritScope, the lock may not be owned by this thread in
-// subsequent code. Users *must* check locked() to determine if the
-// lock was taken. If you're not calling locked(), you're doing it wrong!
-class TryCritScope {
- public:
- explicit TryCritScope(const CriticalSection* cs);
- ~TryCritScope();
-#if defined(WEBRTC_WIN)
- _Check_return_ bool locked() const;
-#elif defined(WEBRTC_POSIX)
- bool locked() const __attribute__ ((__warn_unused_result__));
-#else // !defined(WEBRTC_WIN) && !defined(WEBRTC_POSIX)
-# error Unsupported platform.
-#endif
- private:
- const CriticalSection* const cs_;
- const bool locked_;
- mutable bool lock_was_called_; // Only used by RTC_DCHECKs.
- RTC_DISALLOW_COPY_AND_ASSIGN(TryCritScope);
-};
-
-// A POD lock used to protect global variables. Do NOT use for other purposes.
-// No custom constructor or private data member should be added.
-class LOCKABLE GlobalLockPod {
- public:
- void Lock() EXCLUSIVE_LOCK_FUNCTION();
-
- void Unlock() UNLOCK_FUNCTION();
-
- volatile int lock_acquired;
-};
-
-class GlobalLock : public GlobalLockPod {
- public:
- GlobalLock();
-};
-
-// GlobalLockScope, for serializing execution through a scope.
-class SCOPED_LOCKABLE GlobalLockScope {
- public:
- explicit GlobalLockScope(GlobalLockPod* lock) EXCLUSIVE_LOCK_FUNCTION(lock);
- ~GlobalLockScope() UNLOCK_FUNCTION();
- private:
- GlobalLockPod* const lock_;
- RTC_DISALLOW_COPY_AND_ASSIGN(GlobalLockScope);
-};
-
-} // namespace rtc
+// This header is deprecated and is just left here temporarily during
+// refactoring. See https://bugs.webrtc.org/7634 for more details.
+#include "webrtc/rtc_base/criticalsection.h"
#endif // WEBRTC_BASE_CRITICALSECTION_H_
« no previous file with comments | « webrtc/base/crc32_unittest.cc ('k') | webrtc/base/criticalsection.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698