Cosmos/source/Playgrounds/Ben/os/apps/services/Cosmos.MM/IPagingManager.cs
2009-08-07 02:28:26 +00:00

55 lines
1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cosmos.Kernel.Dispatch;
namespace Cosmos.Kernel.MM
{
/// <summary>
/// Paging manager may be replaced by paging , 32 bit and 64 bit memory managers
/// As well as NUMA etc ..
/// </summary>
internal interface IPagingManager
{
MemoryUsage Details { get; }
bool ReAllocatesMemory { get; }
event EventHandler<EventArgs<MemoryPressure>> MemoryPressureChanged;
UIntPtr RequestPages(MemoryAllocationRequest request);
void FreePages(Process process);
void FreePages(Process process, PageAllocation region);
PageEntry QueryPage(UIntPtr page);
}
internal struct PageAllocation
{
internal UIntPtr Address;
internal uint NumPages;
internal PageAllocation(UIntPtr address, uint numPages)
{
Address = address;
NumPages = numPages;
}
}
}