Botan 2.1.0 Crypto and TLS for C++11

- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

mutex.h
Go to the documentation of this file.
1 /*
2 * (C) 2016 Jack Lloyd
3 *
4 * Botan is released under the Simplified BSD License (see license.txt)
5 */
6
7 #ifndef BOTAN_UTIL_MUTEX_H__
8 #define BOTAN_UTIL_MUTEX_H__
9
10 #include <botan/build.h>
11 #include <botan/types.h>
12
13 #if defined(BOTAN_TARGET_OS_HAS_THREADS)
14
15 #include <mutex>
16
17 namespace Botan {
18
19 template<typename T> using lock_guard_type = std::lock_guard<T>;
20 typedef std::mutex mutex_type;
21
22 }
23
24 #elif defined(BOTAN_TARGET_OS_TYPE_IS_UNIKERNEL)
25
26 // No threads
27
28 namespace Botan {
29
30 template<typename Mutex>
31 class lock_guard
32 {
33 public:
34 explicit lock_guard(Mutex& m) : m_mutex(m)
35 { m_mutex.lock(); }
36
37 ~lock_guard() { m_mutex.unlock(); }
38
39 lock_guard(const lock_guard& other) = delete;
40 lock_guard& operator=(const lock_guard& other) = delete;
41 private:
42 Mutex& m_mutex;
43 };
44
45 class noop_mutex
46 {
47 public:
48 void lock() {}
49 void unlock() {}
50 };
51
52 typedef noop_mutex mutex_type;
53 template<typename T> using lock_guard_type = lock_guard<T>;
54
55 }
56
57 #else
58 #error "Threads unexpectedly disabled in non unikernel build"
59 #endif
60
61 #endif
Botan
Definition: alg_id.cpp:13
Botan::unlock
std::vector< T > unlock(const secure_vector< T > &in)
Definition: secmem.h:125