104 lines
4.1 KiB
Plaintext
104 lines
4.1 KiB
Plaintext
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Microsoft Research Singularity - Singularity ABI
|
||
|
//
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//
|
||
|
// File: DeviceService.csi
|
||
|
//
|
||
|
// Note:
|
||
|
//
|
||
|
|
||
|
using System;
|
||
|
using System.Runtime.CompilerServices;
|
||
|
using Microsoft.Singularity;
|
||
|
|
||
|
namespace Microsoft.Singularity.V1.Services
|
||
|
{
|
||
|
public struct DeviceService
|
||
|
{
|
||
|
[NoHeapAllocation]
|
||
|
public static unsafe uint GetPnpSignature(int index, /*[out]*/ char * output,
|
||
|
uint maxout);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool GetPciConfig(out ushort pciAddressPort,
|
||
|
out ushort pciDataPort,
|
||
|
out ushort identifier);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static int GetIrqCount(byte line);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static uint GetDynamicIoRangeCount();
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool GetDynamicIoPortRange(uint range,
|
||
|
out ushort port,
|
||
|
out ushort size,
|
||
|
out bool readable,
|
||
|
out bool writable);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static unsafe bool GetDynamicIoMemoryRange(uint range,
|
||
|
out byte * data,
|
||
|
out uint size,
|
||
|
out bool readable,
|
||
|
out bool writable);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool GetDynamicIoIrqRange(uint range,
|
||
|
out byte line,
|
||
|
out byte size);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool GetDynamicIoDmaRange(uint range,
|
||
|
out byte channel,
|
||
|
out byte size);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static uint GetFixedIoRangeCount();
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool GetFixedIoPortRange(uint range,
|
||
|
out ushort port,
|
||
|
out ushort size,
|
||
|
out bool readable,
|
||
|
out bool writable);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static unsafe bool GetFixedIoMemoryRange(uint range,
|
||
|
out byte * data,
|
||
|
out uint size,
|
||
|
out bool readable,
|
||
|
out bool writable);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool GetFixedIoIrqRange(uint range,
|
||
|
out byte line,
|
||
|
out byte size);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool GetFixedIoDmaRange(uint range,
|
||
|
out byte channel,
|
||
|
out byte size);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static UIntPtr MapPhysicalRange(UIntPtr physStart,
|
||
|
UIntPtr numBytes,
|
||
|
bool readable,
|
||
|
bool writable);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static void UnmapPhysicalRange(UIntPtr startAddr,
|
||
|
UIntPtr limitAddr);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static bool GetDmaPhysicalAddress(
|
||
|
UIntPtr virtualAddr,
|
||
|
out UIntPtr physicalAddr,
|
||
|
out UIntPtr physicalRemaining
|
||
|
);
|
||
|
}
|
||
|
}
|