SpiecsEngine
 
Loading...
Searching...
No Matches
SpanList.h
Go to the documentation of this file.
1/**
2* @file SpanList.h.
3* @brief The span_list Class Definitions.
4* @author tcmalloc.
5*/
6
7#pragma once
8
9namespace scl {
10
11 /**
12 * @brief Used for manage multiple page memory.
13 */
14 class span
15 {
16 public:
17
18 /**
19 * @brief Constructor Function.
20 */
21 span();
22
23 /**
24 * @brief Destructor Function.
25 */
26 virtual ~span() = default;
27
28 /**
29 * @brief Start page id.
30 */
32
33 /**
34 * @brief How much page it managed.
35 */
37
38 /**
39 * @brief next span.
40 */
42
43 /**
44 * @brief previous span.
45 */
47
48 /**
49 * @brief current pointer.
50 */
52
53 /**
54 * @brief In used memory block count.
55 */
57
58 /**
59 * @brief True if in use.
60 */
61 bool m_IsUse;
62
63 /**
64 * @brief page block size.
65 */
67 };
68
69 /**
70 * @brief Bidirectional cyclic linked list for span.
71 */
73 {
74 public:
75
76 /**
77 * @brief Constructor Function.
78 */
79 span_list();
80
81 /**
82 * @brief Destructor Function.
83 */
84 virtual ~span_list();
85
86 /**
87 * @brief Get begin pointer.
88 * @return Returns begin pointer.
89 */
90 span* Begin() const;
91
92 /**
93 * @brief Get end pointer.
94 * @return Returns end pointer.
95 */
96 span* End() const;
97
98 /**
99 * @brief Push a span to this list.
100 * @param[in] s span.
101 */
102 void PushFront(span* s);
103
104 /**
105 * @brief Pop a span from front.
106 * @return Returns front span.
107 */
108 span* PopFront();
109
110 /**
111 * @brief Empty if Begin equals to End.
112 * @return Returns true if empty.
113 */
114 bool Empty();
115
116 /**
117 * @brief Insert a span before in given position.
118 * @param[in] pos inserted position.
119 * @param[in] ptr inserted span.
120 */
121 static void Insert(span* pos, span* ptr);
122
123 /**
124 * @brief Erase a span form this list.
125 * @param[in] pos erased position.
126 */
127 void Erase(span* pos) const;
128
129 /**
130 * @brief Get mutex.
131 * @return Returns mutex.
132 */
133 std::mutex& GetMutex() { return m_Mutex; }
134
135 private:
136
137 /**
138 * @brief list entry point.
139 */
141
142 /**
143 * @brief mutex for thread safe.
144 */
146 };
147
148}
static void Insert(span *pos, span *ptr)
Insert a span before in given position.
Definition SpanList.cpp:69
span_list()
Constructor Function.
Definition SpanList.cpp:23
span * PopFront()
Pop a span from front.
Definition SpanList.cpp:45
void PushFront(span *s)
Push a span to this list.
Definition SpanList.cpp:40
void Erase(span *pos) const
Erase a span form this list.
Definition SpanList.cpp:83
bool Empty()
Empty if Begin equals to End.
Definition SpanList.cpp:54
span * m_Head
list entry point.
Definition SpanList.h:140
std::mutex m_Mutex
mutex for thread safe.
Definition SpanList.h:145
virtual ~span_list()
Destructor Function.
Definition SpanList.cpp:31
span * Begin() const
Get begin pointer.
Definition SpanList.cpp:59
span * End() const
Get end pointer.
Definition SpanList.cpp:64
std::mutex & GetMutex()
Get mutex.
Definition SpanList.h:133
Bidirectional cyclic linked list for span.
Definition SpanList.h:73
span * m_Next
next span.
Definition SpanList.h:41
span * m_Prev
previous span.
Definition SpanList.h:46
virtual ~span()=default
Destructor Function.
size_t m_BlockSize
page block size.
Definition SpanList.h:66
size_t m_PageId
Start page id.
Definition SpanList.h:31
void * m_FreeList
current pointer.
Definition SpanList.h:51
size_t m_UseCount
In used memory block count.
Definition SpanList.h:56
size_t m_NPages
How much page it managed.
Definition SpanList.h:36
span()
Constructor Function.
Definition SpanList.cpp:12
bool m_IsUse
True if in use.
Definition SpanList.h:61
Used for manage multiple page memory.
Definition SpanList.h:15