mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2025-05-01 22:40:50 -07:00
* dotnet format style --severity info Some changes were manually reverted. * dotnet format analyzers --serverity info Some changes have been minimally adapted. * Restore a few unused methods and variables * Silence dotnet format IDE0060 warnings * Silence dotnet format IDE0052 warnings * Silence dotnet format IDE0059 warnings * Address or silence dotnet format IDE1006 warnings * Address dotnet format CA1816 warnings * Address most dotnet format whitespace warnings * Run dotnet format after rebase and remove unused usings - analyzers - style - whitespace * Add comments to disabled warnings * Remove a few unused parameters * Adjust namespaces * Simplify properties and array initialization, Use const when possible, Remove trailing commas * Start working on disabled warnings * Fix and silence a few dotnet-format warnings again * Address a few disabled IDE0060 warnings * Silence IDE0060 in .editorconfig * Revert "Simplify properties and array initialization, Use const when possible, Remove trailing commas" This reverts commit 9462e4136c0a2100dc28b20cf9542e06790aa67e. * dotnet format whitespace after rebase * Address review feedback * Remove redundant unsafe modifiers * Fix build issues * Add GC.SuppressFinalize() call * Add trailing commas and fix naming rule violations * Remove unused members and assignments
57 lines
1.7 KiB
C#
57 lines
1.7 KiB
C#
using Ryujinx.Memory;
|
|
|
|
namespace Ryujinx.Cpu.AppleHv
|
|
{
|
|
class HvMemoryBlockAllocator : PrivateMemoryAllocatorImpl<HvMemoryBlockAllocator.Block>
|
|
{
|
|
public class Block : PrivateMemoryAllocator.Block
|
|
{
|
|
private readonly HvIpaAllocator _ipaAllocator;
|
|
public ulong Ipa { get; }
|
|
|
|
public Block(HvIpaAllocator ipaAllocator, MemoryBlock memory, ulong size) : base(memory, size)
|
|
{
|
|
_ipaAllocator = ipaAllocator;
|
|
|
|
lock (ipaAllocator)
|
|
{
|
|
Ipa = ipaAllocator.Allocate(size);
|
|
}
|
|
|
|
HvApi.hv_vm_map((ulong)Memory.Pointer, Ipa, size, HvMemoryFlags.Read | HvMemoryFlags.Write).ThrowOnError();
|
|
}
|
|
|
|
public override void Destroy()
|
|
{
|
|
HvApi.hv_vm_unmap(Ipa, Size).ThrowOnError();
|
|
|
|
lock (_ipaAllocator)
|
|
{
|
|
_ipaAllocator.Free(Ipa, Size);
|
|
}
|
|
|
|
base.Destroy();
|
|
}
|
|
}
|
|
|
|
private readonly HvIpaAllocator _ipaAllocator;
|
|
|
|
public HvMemoryBlockAllocator(HvIpaAllocator ipaAllocator, int blockAlignment) : base(blockAlignment, MemoryAllocationFlags.None)
|
|
{
|
|
_ipaAllocator = ipaAllocator;
|
|
}
|
|
|
|
public HvMemoryBlockAllocation Allocate(ulong size, ulong alignment)
|
|
{
|
|
var allocation = Allocate(size, alignment, CreateBlock);
|
|
|
|
return new HvMemoryBlockAllocation(this, allocation.Block, allocation.Offset, allocation.Size);
|
|
}
|
|
|
|
private Block CreateBlock(MemoryBlock memory, ulong size)
|
|
{
|
|
return new Block(_ipaAllocator, memory, size);
|
|
}
|
|
}
|
|
}
|