#include "pls/internal/base/system_details.h"#include <unistd.h>#include <sys/mman.h>namespacepls::internal::base::system_details{size_tget_page_size(){returnsysconf(_SC_PAGESIZE);}void*memory_map_range(size_tsize){PLS_ASSERT(size%get_page_size()==0,"Must only map memory regions in page_size chunks.");returnmmap(nullptr,size,PROT_READ|PROT_WRITE,MAP_SHARED|MAP_ANONYMOUS,-1,0);}intmemory_unmap_range(void*addr,size_tsize){PLS_ASSERT((pointer_t)addr%get_page_size()==0,"Must only unmap memory page_size aligned memory regions.");PLS_ASSERT(size%get_page_size()==0,"Must only map memory regions in page_size chunks.");returnmunmap(addr,size);}intmemory_protect_range(void*addr,size_tsize){returnmprotect(addr,size,PROT_NONE);}}