Add VTimer as alternative interrupt method on Apple Hypervisor (#5663)

* Add VTimer as alternative interrupt method on Apple Hypervisor

* Fix naming violations on TimeApi

* Fix timer interval (was 16us rather than 16ms)

* Fix delta ticks calculation

* Missing ThrowOnError call

* Add SupportedOSPlatform attribute on AppleHv classes
This commit is contained in:
gdkchan
2023-09-25 20:18:32 -03:00
committed by GitHub
parent d6d3cdd573
commit ddc9ae2a83
16 changed files with 114 additions and 31 deletions

View File

@ -1,5 +1,6 @@
using System;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
namespace Ryujinx.Cpu.AppleHv
{
@ -12,10 +13,18 @@ namespace Ryujinx.Cpu.AppleHv
#pragma warning restore CS0649
}
enum HvExitReason : uint
{
Canceled,
Exception,
VTimerActivated,
Unknown,
}
struct HvVcpuExit
{
#pragma warning disable CS0649 // Field is never assigned to
public uint Reason;
public HvExitReason Reason;
public HvVcpuExitException Exception;
#pragma warning restore CS0649
}
@ -255,6 +264,7 @@ namespace Ryujinx.Cpu.AppleHv
}
}
[SupportedOSPlatform("macos")]
static partial class HvApi
{
public const string LibraryName = "/System/Library/Frameworks/Hypervisor.framework/Hypervisor";