singrdk/base/Interfaces/Singularity.V1/Services/PageTableService.csi

102 lines
3.1 KiB
Plaintext
Raw Normal View History

2008-03-05 09:52:00 -05:00
////////////////////////////////////////////////////////////////////////////////
//
// Microsoft Research Singularity - Singularity ABI
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: PageTableService.csi
//
// Note:
//
using System;
using System.Runtime.CompilerServices;
namespace Microsoft.Singularity.V1.Services
{
public struct PageTableService
{
public readonly int id;
[NoHeapAllocation]
public static unsafe uint * GetPageTable();
#if UINTPTR_SUPPORT_IN_ABI
[NoHeapAllocation]
public static UIntPtr GetPageCount();
[NoHeapAllocation]
public static UIntPtr GetBaseAddress();
#endif
[NoHeapAllocation]
public static uint GetProcessTag();
[NoHeapAllocation]
public static UIntPtr Allocate(UIntPtr numPages);
[NoHeapAllocation]
public static UIntPtr AllocateExtend(UIntPtr addr,
UIntPtr numPages);
[NoHeapAllocation]
public static void Free(UIntPtr addr,
UIntPtr numPages);
[NoHeapAllocation]
public static UIntPtr AllocateIOMemory(UIntPtr limit,
UIntPtr bytes,
UIntPtr alignment);
[NoHeapAllocation]
public static void FreeIOMemory(UIntPtr addr,
UIntPtr bytes);
[NoHeapAllocation]
public static bool Query(UIntPtr queryAddr,
out UIntPtr regionAddr,
out UIntPtr regionSize);
[NoHeapAllocation]
public static void GetUsageStatistics(out ulong allocatedCount,
out ulong allocatedBytes,
out ulong freedCount,
out ulong freedBytes);
//////////////////////////////////////////////////////////////////////
#if !UINTPTR_SUPPORT_IN_ABI
[NoHeapAllocation]
public static uint GetPageCount();
[NoHeapAllocation]
public static uint GetBaseAddress();
[NoHeapAllocation]
public static uint Allocate(uint numPages);
[NoHeapAllocation]
public static uint AllocateExtend(uint addr,
uint numPages);
[NoHeapAllocation]
public static void Free(uint addr,
uint numPages);
[NoHeapAllocation]
public static uint AllocateIOMemory(uint limit,
uint bytes,
uint alignment);
[NoHeapAllocation]
public static void FreeIOMemory(uint addr,
uint bytes);
[NoHeapAllocation]
public static bool Query(uint queryAddr,
out uint regionAddr,
out uint regionSize);
#endif
}
}