56 lines
1.6 KiB
C#
56 lines
1.6 KiB
C#
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Microsoft Research Singularity
|
||
|
//
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//
|
||
|
// Note:
|
||
|
//
|
||
|
|
||
|
namespace Microsoft.Singularity
|
||
|
{
|
||
|
using System;
|
||
|
using System.Runtime.InteropServices;
|
||
|
using System.Runtime.CompilerServices;
|
||
|
using System.Threading;
|
||
|
|
||
|
using Microsoft.Singularity.V1.Services;
|
||
|
using Microsoft.Singularity.V1.Threads;
|
||
|
|
||
|
using Microsoft.Singularity.Isal;
|
||
|
|
||
|
//
|
||
|
// Proxy class to access privileged system functions. Most of these will be
|
||
|
// restricted to drivers only. The test whether a SIP can have access to such
|
||
|
// functions is controlled in the kernel side of the call.
|
||
|
//
|
||
|
|
||
|
[CLSCompliant(false)]
|
||
|
[NoCCtor]
|
||
|
[AccessedByRuntime("referenced in Processor.cpp")]
|
||
|
public class PrivilegedGate
|
||
|
{
|
||
|
[NoHeapAllocation]
|
||
|
[AccessedByRuntime("referenced from c++")]
|
||
|
public static bool DisableInterrupts()
|
||
|
{
|
||
|
return Singularity.V1.Services.PlatformService.DisableInterrupts();
|
||
|
}
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
[AccessedByRuntime("referenced from c++")]
|
||
|
public static void RestoreInterrupts(bool enabled)
|
||
|
{
|
||
|
Singularity.V1.Services.PlatformService.RestoreInterrupts(enabled);
|
||
|
}
|
||
|
|
||
|
// Use this method for assertions only!
|
||
|
[NoHeapAllocation]
|
||
|
[AccessedByRuntime("referenced from c++")]
|
||
|
public static bool InterruptsDisabled()
|
||
|
{
|
||
|
return Singularity.V1.Services.PlatformService.InterruptsDisabled();
|
||
|
}
|
||
|
}
|
||
|
}
|