-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
354 additions
and
72 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
// Copyright Š 2024 aka perchik71. All rights reserved. | ||
// Copyright © 2024 aka perchik71. All rights reserved. | ||
// Contacts: <email:[email protected]> | ||
// License: https://www.gnu.org/licenses/lgpl-3.0.html | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
// Copyright © 2024 aka perchik71. All rights reserved. | ||
// Copyright © 2024 aka perchik71. All rights reserved. | ||
// Contacts: <email:[email protected]> | ||
// License: https://www.gnu.org/licenses/lgpl-3.0.html | ||
|
||
|
@@ -10,68 +10,68 @@ namespace voltek | |
{ | ||
namespace core | ||
{ | ||
// Карта памяти, заранее зарезервированная, для конкретного пула, | ||
// чтобы быстро получить нужную память для страницы. | ||
// Факт: ускорение 2%... заброшено. | ||
// Карта памяти, заранее зарезервированная, для конкретного пула, | ||
// чтобы быстро получить нужную память для страницы. | ||
// Факт: ускорение 2%... заброшено. | ||
class mapper : public base | ||
{ | ||
public: | ||
// Размер по умолчанию. | ||
// Размер по умолчанию. | ||
inline static constexpr size_t DEFAULT_SIZE = 256 * 1024 * 1024; | ||
// Размер одного блока по умолчанию. | ||
// Размер одного блока по умолчанию. | ||
inline static constexpr size_t DEFAULT_BLOCKSIZE = DEFAULT_SIZE / 65536; | ||
// Конструктор по умолчанию. | ||
// Конструктор по умолчанию. | ||
mapper(); | ||
// Конструктор. | ||
// В качестве параметра указывается желаемый размер в мб. | ||
// И размер одного блока в байтах. | ||
// Конструктор. | ||
// В качестве параметра указывается желаемый размер в мб. | ||
// И размер одного блока в байтах. | ||
mapper(size_t size, size_t blocksize); | ||
// Конструктор копий. | ||
// Конструктор копий. | ||
mapper(const bits& ob); | ||
// Деструктор. | ||
// Деструктор. | ||
virtual ~mapper(); | ||
// Оператор присвоения | ||
// Оператор присвоения | ||
mapper& operator=(const mapper& ob); | ||
// Функция возвращает если объект класса пуст и нет памяти. | ||
// Функция возвращает если объект класса пуст и нет памяти. | ||
inline bool empty() const { return !_size; } | ||
// Освобождение памяти. | ||
// Освобождение памяти. | ||
inline void clear() { resize(0, 0); } | ||
// Возвращает размер допустимой памяти. | ||
// Возвращает размер допустимой памяти. | ||
inline size_t size() const { return _size; } | ||
// Возвращает размер свободной памяти. | ||
// Возвращает размер свободной памяти. | ||
inline size_t free_size() const { return _freesize; } | ||
// Возвращает размер одного блока. | ||
// Возвращает размер одного блока. | ||
inline size_t block_size() const { return _blocksize; } | ||
// Возвращает кол-во всего допустимых блоков. | ||
// Возвращает кол-во всего допустимых блоков. | ||
inline size_t count_blocks() const { return _size / _blocksize; } | ||
// Возвращает кол-во свободных блоков. | ||
// Возвращает кол-во свободных блоков. | ||
inline size_t free_blocks() const { return _freesize / _blocksize; } | ||
// Возвращает указатель на память, константа. | ||
// Возвращает указатель на память, константа. | ||
inline const char* c_data() const { return _mem; } | ||
// Возвращает указатель на память, не константа. | ||
// Возвращает указатель на память, не константа. | ||
inline char* data() { return _mem; } | ||
// Возвращает указатель на память свободного блока. | ||
// Возвращает указатель на память свободного блока. | ||
void* block_alloc(); | ||
// Освобождает память блока по указателю на память. | ||
// Освобождает память блока по указателю на память. | ||
bool block_free(const void* ptr); | ||
private: | ||
// Изменяет размер памяти. | ||
// В качестве параметра указывается желаемый размер в байтах. | ||
// Если указать 0, то будет освобождена память. | ||
// И размер одного блока в байтах. | ||
// Изменяет размер памяти. | ||
// В качестве параметра указывается желаемый размер в байтах. | ||
// Если указать 0, то будет освобождена память. | ||
// И размер одного блока в байтах. | ||
void resize(size_t size, size_t blocksize); | ||
// Возвращает истину если указатель принадлежит классу. | ||
// Возвращает истину если указатель принадлежит классу. | ||
bool is_valid_ptr(const void* ptr) const; | ||
private: | ||
// Память. | ||
// Память. | ||
char* _mem; | ||
// Допустимый размер. | ||
// Допустимый размер. | ||
size_t _size; | ||
// Свободно. | ||
// Свободно. | ||
size_t _freesize; | ||
// Размер одного блока. | ||
// Размер одного блока. | ||
size_t _blocksize; | ||
// Битовая карта для быстрого поиска. | ||
// Битовая карта для быстрого поиска. | ||
bits* _mask; | ||
}; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.