Botan  2.4.0
Crypto and TLS for C++11
locking_allocator.h
Go to the documentation of this file.
1 /*
2 * Mlock Allocator
3 * (C) 2012 Jack Lloyd
4 *
5 * Botan is released under the Simplified BSD License (see license.txt)
6 */
7 
8 #ifndef BOTAN_MLOCK_ALLOCATOR_H_
9 #define BOTAN_MLOCK_ALLOCATOR_H_
10 
11 #include <botan/types.h>
12 #include <vector>
13 #include <botan/mutex.h>
14 
15 namespace Botan {
16 
18  {
19  public:
20  static mlock_allocator& instance();
21 
22  void* allocate(size_t num_elems, size_t elem_size);
23 
24  bool deallocate(void* p, size_t num_elems, size_t elem_size) BOTAN_NOEXCEPT;
25 
26  mlock_allocator(const mlock_allocator&) = delete;
27 
28  mlock_allocator& operator=(const mlock_allocator&) = delete;
29 
30  private:
32 
33  ~mlock_allocator();
34 
35  mutex_type m_mutex;
36  std::vector<std::pair<size_t, size_t>> m_freelist;
37  uint8_t* m_pool = nullptr;
38  size_t m_poolsize = 0;
39  };
40 
41 }
42 
43 #endif
#define BOTAN_PUBLIC_API(maj, min)
Definition: compiler.h:27
#define BOTAN_NOEXCEPT
Definition: compiler.h:154
Definition: alg_id.cpp:13