forked from Mirror/Ryujinx
79a1314ee4
* 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
34 lines
929 B
C#
34 lines
929 B
C#
using System;
|
|
|
|
namespace Ryujinx.Cpu.AppleHv
|
|
{
|
|
class HvIpaAllocator
|
|
{
|
|
private const ulong AllocationGranule = 1UL << 14;
|
|
private const ulong IpaRegionSize = 1UL << 35;
|
|
|
|
private readonly PrivateMemoryAllocator.Block _block;
|
|
|
|
public HvIpaAllocator()
|
|
{
|
|
_block = new PrivateMemoryAllocator.Block(null, IpaRegionSize);
|
|
}
|
|
|
|
public ulong Allocate(ulong size, ulong alignment = AllocationGranule)
|
|
{
|
|
ulong offset = _block.Allocate(size, alignment);
|
|
|
|
if (offset == PrivateMemoryAllocator.InvalidOffset)
|
|
{
|
|
throw new InvalidOperationException($"No enough free IPA memory to allocate 0x{size:X} bytes with alignment 0x{alignment:X}.");
|
|
}
|
|
|
|
return offset;
|
|
}
|
|
|
|
public void Free(ulong offset, ulong size)
|
|
{
|
|
_block.Free(offset, size);
|
|
}
|
|
}
|
|
}
|