/////////////////////////////////////////////////////////////////////////////// // // 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