///////////////////////////////////////////////////////////////////////////////
//
// Microsoft Research Singularity
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: HalPic.cs
//
// Note:
//
// This file is an implementation of Interfaces/Hal/HalPic.csi
//
using System;
using System.Collections;
using System.Runtime.CompilerServices;
using System.Threading;
namespace Microsoft.Singularity.Hal
{
public class HalPic
{
private Apic apic;
public HalPic(Apic theApic)
{
this.apic = theApic;
}
public byte MaximumIrq
{
[NoHeapAllocation]
get {
return apic.MaximumIrq;
}
}
///
/// Convert interrupt vector to interrupt request line.
///
[NoHeapAllocation]
public byte InterruptToIrq(byte interrupt)
{
return apic.InterruptToIrq(interrupt);
}
///
/// Convert interrupt request line to interrupt vector.
///
[NoHeapAllocation]
public byte IrqToInterrupt(byte irq)
{
return apic.IrqToInterrupt(irq);
}
///
/// Acknowledge the interrupt request. (EOI)
///
[NoHeapAllocation]
public void AckIrq(byte irq)
{
apic.AckIrq(irq);
}
///
/// Enable interrupt request by removing mask.
///
[NoHeapAllocation]
public void EnableIrq(byte irq)
{
apic.EnableIrq(irq);
}
///
/// Disable interrupt request by applying mask.
///
[NoHeapAllocation]
public void DisableIrq(byte irq)
{
apic.DisableIrq(irq);
}
///
/// Acknowledge and mask interrupt.
///
[NoHeapAllocation]
public void ClearInterrupt(byte interrupt)
{
apic.ClearInterrupt(interrupt);
}
}
} // namespace Microsoft.Singularity.Hal