using System.Runtime.InteropServices;
namespace XFESystem.NativeKernel;
public static unsafe partial class Kernel
{
static uint _runtimeReports;
static int _runtimeNextStage;
static bool _runtimeReportInvalid;
[UnmanagedCallersOnly(EntryPoint = "xfe_runtime_probe_report")]
public static void RuntimeProbeReport(int stage, long value)
{
Serial.Write("XFE_DOTNET_PROBE_REPORT stage="); Serial.Number((ulong)(uint)stage);
Serial.Write(" value="); Serial.Number((ulong)value); Serial.Line("");
if (stage == _runtimeNextStage && stage >= 1 && stage <= 6 &&
(stage == 1 ? value > 0 : value == 1))
{
_runtimeReports |= 1u << (stage - 1);
_runtimeNextStage++;
}
else _runtimeReportInvalid = true;
}
#if XFE_DOTNET_RUNTIME
[DllImport("xfe_native", EntryPoint = "xfe_kernel_run_runtime")]
static extern int RunRuntime();
static partial void OnKernelReady()
{
_runtimeReports = 0; _runtimeReportInvalid = false; _runtimeNextStage = 1;
Serial.Line("XFE_DOTNET_RUNTIME_START");
int status = RunRuntime();
Serial.Write("XFE_DOTNET_RUNTIME_RETURN status="); Serial.Number((ulong)(uint)status); Serial.Line("");
if (status != 0 || _runtimeReportInvalid || _runtimeReports != 63) Fail("DOTNET_PROBE_INCOMPLETE");
Serial.Line("XFE_DOTNET_RUNTIME_PROBE_OK GC CWT weak finalizer workers Monitor TLS compacting mutator roots join EH");
}
#endif
}
using System.Runtime.InteropServices;
namespace XFESystem.NativeKernel;
public static unsafe partial class Kernel
{
static uint _runtimeReports;
static int _runtimeNextStage;
static bool _runtimeReportInvalid;
[UnmanagedCallersOnly(EntryPoint = "xfe_runtime_probe_report")]
public static void RuntimeProbeReport(int stage, long value)
{
Serial.Write("XFE_DOTNET_PROBE_REPORT stage="); Serial.Number((ulong)(uint)stage);
Serial.Write(" value="); Serial.Number((ulong)value); Serial.Line("");
if (stage == _runtimeNextStage && stage >= 1 && stage <= 6 &&
(stage == 1 ? value > 0 : value == 1))
{
_runtimeReports |= 1u << (stage - 1);
_runtimeNextStage++;
}
else _runtimeReportInvalid = true;
}
#if XFE_DOTNET_RUNTIME
[DllImport("xfe_native", EntryPoint = "xfe_kernel_run_runtime")]
static extern int RunRuntime();
static partial void OnKernelReady()
{
_runtimeReports = 0; _runtimeReportInvalid = false; _runtimeNextStage = 1;
Serial.Line("XFE_DOTNET_RUNTIME_START");
int status = RunRuntime();
Serial.Write("XFE_DOTNET_RUNTIME_RETURN status="); Serial.Number((ulong)(uint)status); Serial.Line("");
if (status != 0 || _runtimeReportInvalid || _runtimeReports != 63) Fail("DOTNET_PROBE_INCOMPLETE");
Serial.Line("XFE_DOTNET_RUNTIME_PROBE_OK GC CWT weak finalizer workers Monitor TLS compacting mutator roots join EH");
}
#endif
}