/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: AuProcessSectionViewReserved.Unix.hpp Date: 2022-11-15 Author: Reece ***/ #pragma once #include "AuProcessSectionAllocations.hpp" namespace Aurora::Process { struct ProcessSectionViewReserved : IProcessSectionView, ProcessSectionAllocations, AuEnableSharedFromThis { ~ProcessSectionViewReserved(); bool Init(AuUInt uLength); char *pBaseAddress {}; AuUInt GetStart() override; AuUInt GetEnd() override; AuSPtr Allocate(AuUInt length) override; AuSPtr MapFileByPath(const AuString &str, AuUInt64 offset, AuUInt length, AuFS::EFileOpenMode mode, AuFS::EFileAdvisoryLockLevel sectionLock) override; AuSPtr MapFileByObject(const AuSPtr &stream, AuUInt64 offset, AuUInt length, Aurora::IO::FS::EFileOpenMode mode, AuFS::EFileAdvisoryLockLevel processLockLevel) override; AuSPtr MapIPCMemory(const AuString &handle, AuUInt64 offset, AuUInt length, AuFS::EFileOpenMode mode) override; AuSPtr AllocateEx(AuUInt uLength, AuUInt uOffset) override; AuSPtr AllocateEx2(AuUInt uLength, AuUInt uOffset, PageTable permissions) override; AuSPtr MapFileByPathEx(AuUInt viewOffset, const AuString &str, AuUInt64 uOffset, AuUInt uLength, Aurora::IO::FS::EFileOpenMode mode, Aurora::IO::FS::EFileAdvisoryLockLevel processLockLevel) override; AuSPtr MapFileByObjectEx(AuUInt viewOffset, const AuSPtr &pStream, AuUInt64 uOffset, AuUInt uLength, Aurora::IO::FS::EFileOpenMode mode, Aurora::IO::FS::EFileAdvisoryLockLevel processLockLevel) override; AuSPtr MapIPCMemoryEx(AuUInt viewOffset, const AuString &handle, AuUInt64 uOffset, AuUInt uLength, Aurora::IO::FS::EFileOpenMode mode) override; AuList> GetAllocations() override; void *MapAddress(AuUInt uOffset, AuUInt uLength, AuUInt prot, AuUInt share, int fd, AuUInt offset); void Release(AuUInt address); }; }