/////////////////////////////////////////////////////////////////////////////// // // Microsoft Research Singularity // // Copyright (c) Microsoft Corporation. All rights reserved. // /////////////////////////////////////////////////////////////////////////////// /** * Microsoft Research, Cambridge * author: Yaron Weinsberg, Richard Black */ using System; using System.Threading; using System.Collections; using Drivers.Net; namespace NetStack.Common { // An Adapter interface, should exist in any environment // can be implemented by a driver, simulator or whatever. public interface IAdapter { string DriverName { get; } string DriverVersion { get; } EthernetAddress HardwareAddress { get; } uint LinkSpeed { get; } WaitHandle GetReadHandle(); WaitHandle GetWriteHandle(); // get the received packets from the adapter void GetReceivedPackets(Queue! outQueue); // called when received packet has been process and can // be returned to the device. void PopulateRxRing(NetPacket! packet); // get the number of transmitted packets just completed transmission uint GetTransmittedPackets(); // populate the adapter's transmit ring with new NetPackets void PopulateTxRing(NetPacket[]! txPackets, uint txPacketCount); // get the free space at the txRing int TxSlotsFree { get; } } } // namespace Drivers.Net