8#include "pedigree/kernel/Log.h"
9#include "pedigree/kernel/processor/MemoryRegion.h"
10#include "pedigree/kernel/processor/PhysicalMemoryManager.h"
11#include "pedigree/kernel/processor/VirtualAddressSpace.h"
13bool runAnonymousMemoryRegionRegression() {
14 NOTICE(
"QEMU-CONCURRENCY-TEST: BEGIN anonymous-memory-region-release");
19 ERROR(
"QEMU anonymous MemoryRegion regression could not allocate a page");
23 MemoryRegion region(
"QEMU anonymous MemoryRegion regression");
29 ERROR(
"QEMU anonymous MemoryRegion regression could not map its page");
33 void* address = region.virtualAddress();
35 if (!addressSpace.
isMapped(address)) {
38 ERROR(
"QEMU anonymous MemoryRegion regression was not mapped");
43 if (addressSpace.
isMapped(address)) {
44 addressSpace.
unmap(address);
46 ERROR(
"QEMU anonymous MemoryRegion release left a stale mapping");
51 NOTICE(
"QEMU-CONCURRENCY-TEST: PASS anonymous-memory-region-release");
Special memory entity in the kernel's virtual address space.
static const size_t continuous
virtual physical_uintptr_t allocatePage(size_t pageConstraints=0)=0
static PhysicalMemoryManager & instance()
static const size_t force
static const size_t anonymous
virtual void freePage(physical_uintptr_t page)=0
virtual bool allocateRegion(MemoryRegion &Region, size_t cPages, size_t pageConstraints, size_t Flags, physical_uintptr_t start=-1)=0
virtual bool isMapped(void *virtualAddress)=0
static const size_t KernelMode
static const size_t Write
static EXPORTED_PUBLIC VirtualAddressSpace & getKernelAddressSpace()
virtual void unmap(void *virtualAddress)=0