51 lines
1.5 KiB
C#
51 lines
1.5 KiB
C#
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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
|