/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: ProcessSectionView.Unix.hpp Date: 2022-08-10 Author: Reece ***/ #pragma once namespace Aurora::Process { struct ProcessSectionView : IProcessSectionView, AuEnableSharedFromThis { 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; AuThreadPrimitives::SpinLock spinlock; AuList> allocations; void *MapAddress(AuUInt uOffset, AuUInt uLength, AuUInt prot, AuUInt share, int fd, AuUInt offset); }; }