Refactor interface between backend and frontend (#530)

* Rename to use Config, rather than StateHandle/Globals/Backend
* Make Backend a type on Config that contains the address space management implementation
* Make Ranges part of the Backend configuration, so we can reuse code for different ways of managing memory
* Pull the common chains of range definitions into separate files for reuse.
* Move PagemapEntry to CommonConfig
* Expose Pagemap through backend, so frontend doesn't see Pagemap directly
* Remove global Pal and use DefaultPal, where one is not pass explicitly.

Co-authored-by: David Chisnall <davidchisnall@users.noreply.github.com>
Co-authored-by: Nathaniel Filardo <105816689+nwf-msr@users.noreply.github.com>
This commit is contained in:
Matthew Parkinson
2022-05-31 10:45:04 +01:00
committed by GitHub
parent 1b8aa6bc0d
commit 03c9da6aa4
42 changed files with 765 additions and 538 deletions

View File

@@ -12,7 +12,7 @@ struct PoolAEntry : Pooled<PoolAEntry>
PoolAEntry() : field(1){};
};
using PoolA = Pool<PoolAEntry, Alloc::StateHandle>;
using PoolA = Pool<PoolAEntry, Alloc::Config>;
struct PoolBEntry : Pooled<PoolBEntry>
{
@@ -22,14 +22,14 @@ struct PoolBEntry : Pooled<PoolBEntry>
PoolBEntry(int f) : field(f){};
};
using PoolB = Pool<PoolBEntry, Alloc::StateHandle>;
using PoolB = Pool<PoolBEntry, Alloc::Config>;
void test_alloc()
{
auto ptr = PoolA::acquire();
SNMALLOC_CHECK(ptr != nullptr);
// Pool allocations should not be visible to debug_check_empty.
snmalloc::debug_check_empty<Alloc::StateHandle>();
snmalloc::debug_check_empty<Alloc::Config>();
PoolA::release(ptr);
}