|
|
1.1 root 1: /*
2: Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
3:
4: Governed by the TrueCrypt License 2.4 the full text of which is contained
5: in the file License.txt included in TrueCrypt binary and source code
6: distribution packages.
7: */
8:
9: #ifndef TC_HEADER_Platform_Mutex
10: #define TC_HEADER_Platform_Mutex
11:
12: #ifdef TC_WINDOWS
13: # include "System.h"
14: #else
15: # include <pthread.h>
16: #endif
17: #include "PlatformBase.h"
18:
19: namespace TrueCrypt
20: {
21: class Mutex
22: {
23: public:
24: Mutex ();
25: ~Mutex ();
26:
27: void Lock ();
28: void Unlock ();
29:
30: protected:
31: bool Initialized;
32: #ifdef TC_WINDOWS
33: CRITICAL_SECTION SystemMutex;
34: #else
35: pthread_mutex_t SystemMutex;
36: #endif
37:
38: private:
39: Mutex (const Mutex &);
40: Mutex &operator= (const Mutex &);
41: };
42:
43: class ScopeLock
44: {
45: public:
46: ScopeLock (Mutex &mutex) : ScopeMutex (mutex) { mutex.Lock(); }
47: ~ScopeLock () { ScopeMutex.Unlock(); }
48:
49: protected:
50: Mutex &ScopeMutex;
51:
52: private:
53: ScopeLock (const ScopeLock &);
54: ScopeLock &operator= (const ScopeLock &);
55: };
56: }
57:
58: #endif // TC_HEADER_Platform_Mutex
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.