<> <> <> <<>> EthernetFace: DEFINITIONS = BEGIN <<>> <> <<>> GetNextDevice: PROCEDURE [DeviceHandle] RETURNS [DeviceHandle]; <> AddCleanup: PROCEDURE [DeviceHandle]; RemoveCleanup: PROCEDURE [DeviceHandle]; <> HostNumber: TYPE = MACHINE DEPENDENT RECORD [SELECT type: * FROM physical => [a: CARDINAL[0..32768), b: CARDINAL, c: CARDINAL], multicast => [a: CARDINAL[0..32768), b: CARDINAL, c: CARDINAL], ENDCASE]; <> TurnOn: PROCEDURE [device: DeviceHandle, host: physical HostNumber, inInterrupt, outInterrupt: WORD, globalState: GlobalStatePtr]; TurnOff: PROCEDURE [device: DeviceHandle]; <> QueueOutput: PROCEDURE [device: DeviceHandle, buffer: LONG POINTER, length: CARDINAL, cb: ControlBlock]; QueueInput: PROCEDURE [device: DeviceHandle, buffer: LONG POINTER, length: CARDINAL, cb: ControlBlock]; <> GetStatus: PROCEDURE [cb: ControlBlock] RETURNS [status: Status]; <> GetRetries: PROCEDURE [cb: ControlBlock] RETURNS [CARDINAL]; <> GetPacketLength: PROCEDURE [cb: ControlBlock] RETURNS [CARDINAL]; <> GetPacketsMissed: PROCEDURE [DeviceHandle] RETURNS [CARDINAL]; <> <<>> DeviceHandle: TYPE[1]; GlobalStatePtr: TYPE = LONG POINTER; Status: TYPE = { pending, ok, overrun, -- Input data arrived when FIFO was full underrun, -- Output FIFO went empty before end of packet was set packetTooLong, -- Input packet didn't fit into buffer tooManyCollisions, -- More than 16 attempts to transmit the same packet crc, crcAndBadAlignment, badAlignmentButOkCrc, otherError}; <> ControlBlock: TYPE = LONG POINTER TO ControlBlockRecord; ControlBlockRecord: TYPE; <<>> globalStateSize: READONLY CARDINAL; controlBlockSize: READONLY CARDINAL; nullDeviceHandle: READONLY DeviceHandle; hearSelf: READONLY BOOLEAN; <<>> END. LOG Time: September 5, 1980 12:16 AM By: HGM Action: Create from EthernetOneFace Time: May 6, 1983 1:00 pm By: ADB Action: Minor changes for Cedar nucleus conversion